Day09 覆写、final、多态

覆写

覆写是子类与父类有相同的成员方法(方法名,参数列表,返回值都一样),覆写特指成员方法,只有成员方法可以覆写
什么时候需要覆写:
父类方法不能满足子类需要时,需要对方法进行覆写
覆写偶尔条件:

  1. 必须是继承关系
  2. 方法名,参数列表,返回值必须相同
  3. 不能拥有更低的访问权限
  4. 不能有更宽泛的访问异常

继承最基本的作用:代码重用
继承最重要的功能:方法覆写
覆写的目的:

  • 满足当前的需求
  • 错误越来越少
  • 功能越来越强
  • 使用范围越来越广

Final

final是修饰符,表示最终的,不能更改的
作用:

  • final修饰的类不能被继承
  • final修饰的成员方法不能被覆写
  • final修饰的变量没有默认值,必须显示赋值,并且整个生命周期不可更改
  • 常量: public static final
    修饰对象可以更改对象的值,不能更改对象
    Day09 覆写、final、多态_第1张图片

多态

软件设计六大原则

  • 单一职责原则
  • 里氏替换原则 : 能使用父类的地方就一定可以使用子类
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特原则
  • 开闭原则
    多态 就是父类引用指向子类对象
    多态的形式
    直接多态,形参实参,返回值
    缺点:丢失子类属性
    Day09 覆写、final、多态_第2张图片
    使用多态进行属性调用︰
  1. 父类没有,报错,而且是编译时报错
  2. 父类有,子类没有,执行父类
  3. 父类有,子类也有,除了成员方法执行子类,其他都执行父类

Instanceof

多态叫向上转型,子类到父类的自动转换
父类到子类是强制转换,又叫向下转型

隐秘多态

this发生多态
子类调用父类中的this
Day09 覆写、final、多态_第3张图片

Object

所有类都要直接或者间接继承Object
getClass : 获取运行时类,反射机制讲解
Clone : 克隆对象,废弃
Notify,notifyAll,wait : 让线程进入等待,和唤醒线程,多线程讲解
toString,finalize,equals,hashCode:散列表

Equals

比较两个对象是否相等

==:基本数据类型比较值,引用数据类型比较地址
Day09 覆写、final、多态_第4张图片

Finalize

垃圾自动回收
没有更多引用指向该对象,此时该对象被视为垃圾

  • Object中的finalize方法,是当对象被回收之前,自动调用该方法
  1. finalize方法所有对象都有
  2. finalize方法不需要程序员调用,由系统自动调用
  3. 就算程序员对finalize方法进行调用,也只是单纯的方法调用而已,并没有垃圾回收功能
  4. 因为finalize方法并不会垃圾回收,而且被回收之前,自动执行一次而已
  5. 结合finalize方法的执行特征,可以在对象销毁之前,做一些关闭资源等销毁操作

HashCode

目的:给每一个对象生成唯一的标识符
哈希冲突:同一个对象生成多次,一定是相同的值,不同的对象生成多次也是相同的值
根据hash算法生成哈希值
算法:直接寻址法,数字分析法,平方取中法,折叠法,随机数法,除留余数法

toString

设计目的:返回该对象的字符串形式
默认返回内存地址
输出对象时会自动调用toString方法

你可能感兴趣的:(java)