public Father() {
callFather();
}
public void callFather() {
System.out.println("call father!");
}
}
class Son extends Father {
public Son() {
super();
}
public void callFather() {
System.out.println("call son!");
}
}
public class Init {
public static void main(String[] args) {
Son son = new Son();
Father father = new Son();
}
}
打印的结果为什么会是:
call son!
call son!
super();之后不是执行超类构造器的代码吗?那Father()调用callFather();为什么是子类重写的?这个callFather();
方法到底是谁调用的?父类是怎么没有获得子类对象引用的情况下实现调用的?
我的想法是子类偷偷把自己的this指针传给了super(),但我感觉有点奇怪,既然构造器不同于普通的成员方法,不能由对象调用,那么传this指针可能吗?
希望哪个高手能给我一点指点??
小弟不胜感谢!