class A {
A() {
System.out.print("A");
}
}
class B extends A {
B() {
System.out.print("B");
}
}
class C extends B {
C() {
System.out.print("C");
}
}
public class My extends C {
My(){
super();
}
public static void main(String[] args) {
My m = new My();
}
}
问题从一个面试问题开始(在 Java 中创建对象时会发生什么?)
答案是……
最派生类的构造函数被调用。构造函数做的第一件事就是调用它的超类的构造函数。这个过程一直持续到调用 java.lang.Object 的构造函数,因为 java.lang.Object 是 java 中所有对象的基类。在执行构造函数的主体之前,会执行所有实例变量初始化程序和初始化块。然后执行构造函数的主体。因此,基类的构造函数首先完成,最派生类的构造函数最后完成。
所以,根据上面的说法,答案应该是ABCC,但它只显示ABC。虽然,当我评论super()
派生构造函数时。然后,输出为ABC。请帮我弄清楚,我是否误解了上面的段落。?