1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解java继承中的初始化机制)。
例子:
public abstract class Father {
public Father() {
display();
}
public void display() {
System.out.println("Father's display");
}
}
public class Son extends Father {
public Son() {
}
public void display() {
System.out.println("Son's display");
}
public static void main(String[] args) {
new Son();
}
}
输出为:
Son's display
这种机制有优点&#x