作用:改善代码的组织结构和可读性,创建可扩展的程序,消除类之间的耦合性。
向上转型:对象可以作为它本身的类型使用,也可以作为它的基类型(两次继承也可以)使用。
作为参数传递,或者:Shape s = new Circel();
后期绑定:除了static和final方法(private方法属于final方法)之外,其他所有方法都是后期绑定(动态绑定,运行时绑定)。
final:防止其他人覆盖代码,关闭动态绑定;最好根据设计来决定是否使用final,而不是出于试图提高性能的目的,因为这样做对程序整体性能不会有什么改观。
private:只有非private类才能被覆盖,在覆盖private方法时,编译器虽然不会报错,但是也不会按照期望运行,因此,在导出类中,对于基类的private方法,最好采用不同名字。
构造器:不具有多态性(实际为static方法,static声明为隐式)。
导出类构造:要首先将分配给对象的存储空间初始化为二进制零,然后顺序调用所有基类的构造器(从上层到底层),然后调用成员的构造器,最后调用导出类构造器。
用尽可能简单的方法使对象进入正常状态,尽量避免调用其他方法。
销毁:销毁的顺序应该与初始化顺序相反,对于字段,与声明顺序相反,对于类,先销毁导出类,后销毁基类。
尽管通常不必执行清理工作,但是一旦要执行就必须谨慎。
如果成员对象中存在多个对象共享的情况,需要使用引用计数来跟踪仍旧访问着共享对象的数量。
协变返回类型:在导出类的被覆盖方法中可以返回基类方法的返回类型的某种导出类型。
设计程序:相比继承,更好的方法时首先选择“组合”。
纯继承与扩展。