由于多态机制,在一个设计良好的面向对象程序中,许多方法,只与基类接口通信。这样的程序是可扩展的,因为可以从通用的基类派生出新的数据类型,从而添加新的功能。那些操纵基类接口的方法不需要改动就可以应用于新类。
只有非 private 方法才能被覆写,但是得小心覆写 private 方法的现象,编译器不报错,但不会按我们所预期的执行。为了清晰起见,派生类中的方法名采用与基类中 private 方法名不同的命名。
只有普通的方法调用可以是多态的。
如果一个方法是静态(static)的,它的行为就不具有多态性。静态的方法只与类关联,与单个的对象无关。
构造器不具有多态性(它们实际上是静态方法,但是隐式声明的)。
对象的构造器调用顺序:
初始化的实际过程是:
编写构造器有一条良好规范:做尽量少的事让对象进入良好状态。如果有可能的话,尽量不要调用类中的任何方法。在构造器中唯一能安全调用的只有基类的 final 方法(包括 private 方法,它们自动属于 final)。
Java 5 中引入了协变返回类型,这表示派生类的被覆写方法可以返回基类方法返回类型的派生类型。
有一条通用准则:使用继承表达行为的差异,使用属性表达状态的变化。在上个例子中,两者都用到了。
原文:https://www.cnblogs.com/huangwenjie/p/11375708.html