Java学习第四天

面向对象

面向对象思想:物以类聚,分类的思维模式。

对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,使用面向对象思维来分析整个系统。

三大特性

  • 封装
  • 继承
  • 多态

1.方法的调用

  • 静态方法:static。通过类名直接调用。内部调用需要使用this
  • 非静态方法:对象实例化后才能调用

2.使用new关键字创建对象

  • 除了分配内存之外,还会给实例对象进行默认初始化以及对类中构造器的调用。

3.对象的引用

引用类型:基本类型(8)

对象是通过引用来操作的:栈-->堆(地址)

变量中保存的只是实际对象对应的地址信息,而不是实际对象数据。

对于基本类型变量,原来的数据将被覆盖掉,被替换为新的值。对于引用类型变量str,赋值运算符只会改变变量中所保存的对象的地址信息,原来对象的地址被覆盖掉,重新写入新对象的地址数据。但原来的对象本身并不会被改变,只是不再被任何引用所指向的对象,即“垃圾对象”,后续会被垃圾回收器回收。

4.高内聚、低耦合

高内聚:类的内部数据操作细节自己完成,不允许外部干涉。

低耦合:仅暴露少量的方法给外部使用。

封装(数据的隐藏):应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问。

具体做法:属性私有。

5.继承

关键字:extend

​ Java中类只有单继承,没有多继承

在Java中所有的类都默认继承object类

属性种类:

  • public

  • protect

  • default:

  • private:无法被继承

    无法继承final 类

supper:父类对象。supper()父类构造器必须写在第一行。supper()和子类构造器不能同时调用。

this:当前对象

构造器顺序:先调用父类构造器再调用子类构造器。

6.重写

需要有继承关系,子类重写父类的方法

  • 方法名和参数列表必须相同
  • 非静态方法,它不属于实例
  • 不能final、private修饰
  • 修饰符:范围可以扩大:public>protect>default>private
  • 抛出的异常:范围可以被缩小,但不能扩大

7.多态

一个对象的实际类型是确定的。但是可以指向的引用类型就不确定了

  • 多态是方法的多态,属性没有多态
  • 父类和子类有联系 类型转换异常
  • 存在条件:继承关系,方法需要重写,父类引用指向子类对象

instanceof :

  • 两者引用类型不存在父子关系--报错

  • 两者引用类型存在父子关系--值不存在父子关系--false

  • 两者引用类型存在父子关系--值存在父子关系--true

8.类型转换

类型之间转化:

64位 32位

父 子

(高 低)

低转高:直接转换

高转低:强制转换 ----(类型)

9.static 静态

  • 静态当类加载时加载
  • 所有实例共享同一个静态变量的方法
  • 非静态方法可以调用静态方法,静态方法可以调用静态方法但不能调用非静态方法
  • static{ //静态代码块} {//匿名代码块}。加载顺序:静态代码块(只执行一次)->匿名加载块
  • 静态导入函数 static import

10.抽象类

关键字:abstract

抽象类用法:约束

  • 抽象类的所有方法都由继承的子类来实现,除非子类也是抽象类

  • 无法new抽象类

  • 抽象类中可以写普通方法,抽象方法必须再抽象类中

11.接口

关键字:interface

接口本质是契约,只有规范,无法写方法

接口中属性都是静态常量

继承:implements

public class UserImpl implements User1,User2

12.内部类(友元)

在A类中定义B类

A a=new A();
A.B b=a.new B();
  • 内部类可以获取外部类的私有属性

杂项

ctrl+h 继承树结构

alt+insert:override重写

posted @ 2021-09-29 10:58  80Creat  阅读(27)  评论(0)    收藏  举报