[转]【原文】
1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解java继承中的初始化机制)。
例子:
public abstract classFather {
publicFather() {
display();
}
public voiddisplay() {
System.out.println("Father's display");
}
}
public classSonextendsFather {
publicSon() {
}
public voiddisplay() {
System.out.println("Son's display");
}
public static voidmain(String[] args) {
newSon();
}
}
输出为:
Son's display