父类和子类的调用顺序问题
http://www.cnblogs.com/lanxuezaipiao/p/4153070.html
(1)Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定
(2)如果某个方法是静态的,它的行为就不具有多态性
class StaticSuper { public static String staticGet() { return "Base staticGet()"; } public String dynamicGet() { return "Base dynamicGet()"; } } class StaticSub extends StaticSuper { public static String staticGet() { return "Derived staticGet()"; } public String dynamicGet() { return "Derived dynamicGet()"; } } public class StaticPolymorphism { public static void main(String[] args) { StaticSuper sup = new StaticSub(); System.out.println(sup.staticGet()); System.out.println(sup.dynamicGet()); } }
输出:静态木有多态性的表现,子类仍然表现出父类的方法。
Base staticGet()
Derived dynamicGet()
(3)构造函数并不具有多态性,它们实际上是static方法,只不过该static声明是隐式的(所以,构造函数是不能被继承的)
(4)在父类构造函数内部调用具有多态行为的函数将导致无法预测的结果,因为此时子类对象还没初始化,此时调用子类方法不会得到我们想要的结果