多态
——“封装”通过合并特征和行为来创建新的数据类型。“实现隐藏”则通过“私有化(private)”将接口和实现分离开来。多态的作用:消除类型之间的耦合关系。又名:动态绑定dynamic binding/后期绑定late binding或运行时绑定run-time binding
1. 向上转型:将对某个对象的引用视为对其基类型引用的做法被称作“向上转型”,不用管导出类的存在,编写的代码只是与基类打交道。
2. 方法调用绑定:前期绑定(early binding)程序执行前进行绑定---由编译器和链接程序实现。后期绑定(late binding)在运行时,根据对象的类型进行绑定。
3. 扩展性:多态——我们所做的代码修改,不会对程序中其他不应 影响的部分产生破坏。让程序员“将改变的事物与未变的事物分离开来”。
4. 缺陷:会重载“私有方法”。在导出类中,对于基类的private方法,最好用一个不同的名字。
5. 抽象类和抽象方法:包含抽象方法的类叫做“抽象类(abstract class)”,如果一个类包含一个或多个抽象方法,该类必须被限制为是抽象的,(否则,编译器会报错)。
6. 构造器和多态:要理解构造器怎样通过多态在复杂的层次结构中运作。
1) 构造器的调用顺序:a)调用基类构造器。b)按声明顺序调用成员的初始状态设置模块c)调用导出类构造器的主体。
2) 继承与清除:对于属性,处理的顺序和声明的顺序相反。对于基类,应该首先对其导出类进行清除,然后才是基类。
3) 构造器内部的多态方法的行为:一条规则——用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其他方法。
7. 用继承进行设计:用继承表达行为间的差异,并用属性表达状态上的变化。
纯继承与扩展:向上转型存在的问题——不能调用那些新增方法。
向下转型与运行期类型标识:向下转型,若失败,则返回一个classCastException异常。运行期类型识别(RTTI),运行期间对类型进行检查的行为。