关于java new一个对象的内幕过程(结合下面程序),哪位高手帮忙说详细点

来源:百度知道 编辑:UC知道 时间:2024/04/29 17:13:15
class A{
A(){
System.out.println("I AM A!");
}

}

class B extends A {
B(){
System.out.println("I AM B!");
}
}

class C extends B{
C(){
System.out.println("I AM C!");
}

}

public class Melo {
public static void main(String[] args) {
C c = new C();
}
}
程序结果:
I AM A!
I AM B!
I AM C!

构造函数调用顺序问题
记住先调用子类的构造函数 再调用基类的构造函数
程序中 C c = new C();
定义了一个C对象,C类继承自B类 ,但B继承自A,所以先调用A类的构造函数,然后B类 然后C类

先调用基类的构造函数,然后才调用子类的构造函数。new C的对象时调用其父类B的构造方法,然后B继承A再调用A的构造方法,所以输出为:
I AM A!
I AM B!
I AM C!