第八章:多态(上)

时间:2021-09-27 09:22:48

概述

多态通过分离做什么怎么做,从另一角度将接口和实现分离开来。多态不但可以改善代码的组织结构和可读性,还可以创建可扩展的程序。
多态的作用是消除类型之间的耦合关系。

8.2.1 方法调用绑定

将一个方法调用同一个方法主体关联起来 被称作绑定
若在程序执行前进行绑定(如果有的话,由编译器和连接程序实现) 叫做前期绑定。这是面向过程语言的默认绑定方式。C语言只有一种方法调用,那就是前期绑定。
后期绑定:在运行时根据对象的类型进行绑定。后期绑定也叫做动态绑定运行时绑定
java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定。

8.2.2 产生正确的行为

java中所有的方法都是通过动态绑定来实现多态的。
只有非private方法才可以被覆盖,如果你覆盖了private修饰的方法,编译器虽然不会报错,但是却不会按照你的想法(多态)来执行。

8.2.5 缺陷:域与静态方法

只有普通的方法调用是多态的。

8.3 构造器和多态

构造器不具备多态性,构造器实际上是static方法,只不过是隐式声明的而已。
父类的构造器总是在子类的构造过程中被调用,而且按照继承层次逐渐向上链接,以使每个父类的构造器都能得到调用。
对象调用构造器要遵循下面的顺序:

  1. 调用基类(父类)构造器。这个步骤会不断地反复递归下去,首先是构造这种层次结构的根,然后是下一层子类,直到最低层的子类。
  2. 按声明顺序调用成员的初始化方法。
  3. 调用子类构造器的主体。