自学java 第八章多态
今天学习了java中的多态。
多态也称为动态绑定,后期绑定或运行时绑定。
首先学的向上转型,即将导出类的对象赋值给基类的引用。
方法调用绑定,包括前期绑定和后期绑定。
前期绑定,程序执行前绑定,用static或final或private修饰的方法都属于前期绑定。由于前期绑定的方法不能在导出类中被覆盖,因此不能实现多态。
后期绑定(也叫动态绑定或运行时绑定),运行时根据对象的类型进行绑定,只要不是前期绑定的方法都自动是后期绑定,java中所有方法都是通过动态绑定实现多态的。
注意:在子类中不要覆盖基类中的private方法,否则在多态运行时出现的结果会出现错误(因为实际调用的还是基类中的private方法);
static类的方法是与类相关联的,而不是与单个对象相关联,通过多态使用时调用的还是基类中的static方法,因此它不具有多态性。
派生类的初始化顺序:
1.其它任何事物发生前,将分配给对象的存储空间初始化为二进制的0;
2.从最底部的根基类开始初始化static成员,按继承顺序初始到导出类,然后再从根基类开始按声明顺序初始成员变量然后调用构造方法,按继承顺序初始到导出类。
使用继承进行设计是会用到状态模式,具体的介绍: 链接http://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html
继承表示:“is-a”的关系,组合表示:“has-a”的关系。
在向下转型中,基类对象不能调用导出类中的扩展方法,否则运行时会报错,而通过多态将基类引用强制转换为导出类型则可以调用导出类的所有方法。