【笔记】Java编程思想—一多态

时间:2022-12-28 18:12:35

一种类型与其他类型从同一个基类导出,多态方法调用使导出类表现出区别。

多态也称为动态绑定;

1、让Instrument的每种子类如Wind,Strings,Brass都能使用tune方法

不管导出类,让代码只与基类打交道更好

【笔记】Java编程思想—一多态

【笔记】Java编程思想—一多态

【笔记】Java编程思想—一多态

【笔记】Java编程思想—一多态

为每个数组元素draw时,与类型有关的特定行为会奇迹般发生。对draw的调用是动态绑定的。draw就是多态方法调用。


2、动态绑定:方法调用与方法主体关联起来称作绑定,java中都是后期绑定,运行时根据对象类型进行绑定。

用了final后,可防止他人覆盖该方法。可以关闭动态绑定。

【笔记】Java编程思想—一多态

【笔记】Java编程思想—一多态

【笔记】Java编程思想—一多态

tune是多态方法调用

当instrument接口中添加了其他方法,tune不需要改变


3、抽象类

Instrument类的目的是为其他导出类创建一个通用接口

包含抽象方法的类叫抽象类

继承抽象类,必须重写基类的抽象方法

【笔记】Java编程思想—一多态

abstract抽象类不要求所有方法都是抽象的。

interface则是更纯粹的抽象类,无方法体。

【笔记】Java编程思想—一多态

4、构造器与多态

构造器是隐式static,无多态性

5、构造器调用顺序

先调用基类构造器,再初始化成员变量,最后初始化导出类构造器

6、构造器类避免调用多态方法,可覆盖的基类抽象方法,只能调用基类中的final方法或private方法。


7、用继承表达行为间的差异,并用字段(组合)表达状态上的变化

【笔记】Java编程思想—一多态

通过继承得到两个不同的子类HappyActor和SadActor,用于表达act方法的差异。而Stage通过运用组合使自己的状态发生变化。

8、向上转型安全,但会丢失导出类中的扩展接口。向下转型不安全