多态是面向对象的第三大特征。
多态的作用是消除类型之间的耦合关系。
1.方法调用绑定
①绑定:将一个方法调用同一个方法主体关联起来。
前期绑定:在程序执行前进行绑定。
后期绑定(动态绑定):在运行时根据对象的类型进行绑定。除了final和static方法外都是后期绑定,后期绑定是自动发生的。
多态是通过动态绑定实现的。只需要写与基类打交道的代码即可。即发消息给对象,让对象来判定应该做什么事。
②可扩展性
可扩展的:可以从通用的基类继承出新的数据类型,但操纵基类接口的方法不需要改变就可以应用与新类。
③缺点
“覆盖”私有方法;域与静态方法。
2.构造器和多态
构造器调用顺序:调用基类构造器--按声明顺序调用成员的初始化方--调用导出类构造器主体。
销毁顺序与初始化顺序相反。
初始化过程:
①在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零。
②调用基类构造器,此时调用被覆盖后的draw()方法。
③按照声明的顺序调用成员的初始化方法。
④调用导出类的构造器主体。
3.协变返回类型
表示在导出类中的被覆盖方法可以返回基类方法的返回类型的某种导出类型。
4.用继承进行设计
用继承表达行为间的差异,并用字段表达状态上的变化。