Java学习第三篇——多态

多态——只要不是后期绑定,就不是多态

绑定
  • 定义:建立函数调用(method calling)和函数本体(method body)之间的关联
  • 程序执行前绑定——先期绑定(编译期绑定)
  • 执行期判定对象类别,进行相应的绑定——后期绑定(动态绑定)
  • java所有函数除了声明为final的,其余皆用后期绑定,导出final的两个关键作用1、防止覆写;2、关闭动态绑定
覆写vs重载
  • 重载,函数名称一致,形参不同,不是多态调用
  • 覆写,派生类实现或者重新实现函数
抽象类和抽象函数
  • 含有abstract method的class称之为abstract class抽象类
构造函数和多态
  • 构造函数调用顺序

1、调用base class 的构造函数,递归到root上,然后依次向下调用derived class,直至最末为止。
2、根据成员声明顺序,设置初值
3、调用derived class 构造函数本体

继承和finalize()
  • 在derived class 中覆写finalize()时,需要调用base class 的 finalize(),调用顺序和构造时候相反。
多态方法在构造函数中的行为
  • 构造函数中调用动态绑定的某个函数,会唤起该函数被覆写的定义。
  • 实际初始化过程

1、所有事之前,分配给该对象的存储空间会被初始化为二进制的0
2、以前面的方式调用构造函数

  • 构造函数中唯一可以安全调用的函数是base class 中的final函数
最后,继承和多态的选择,在不清楚如何选择的时候可以优先选择组合。

你可能感兴趣的:(Java学习第三篇——多态)