如下面的代码所示,给定一个超类Parent
,其方法calculate()
在Parent
的构造函数中调用,但也在类Child
中被重写,为什么在Child
的构造函数中对Parent
的构造函数的隐式调用不调用Parent
的calculate()
,而是调用Child
的calculate()
?
class Parent {
Parent() {
calculate();
System.out.println("Empty parent ctor.");
}
void calculate() {
System.out.println("Parent calculating...");
}
}
class Child extends Parent {
Child() {
System.out.println("Empty child ctor.");
}
@Override
void calculate() {
System.out.println("Child calculating...");
}
}
public class ParentConstructor {
public static void main(String [] args) {
Parent child = new Child();
}
}
输出:
Child calculating...
Empty parent ctor.
Empty child ctor.
我本以为要正确构造一个Parent
对象,它的构造函数应该总是用它自己的方法定义来调用.