构造函数(构造器)的调用顺序

来源:互联网 发布:联通蜂窝移动数据设置 编辑:程序博客网 时间:2024/06/06 18:10
package demo2;


class Meal {
Meal(){
System.out.println("Meal()");
}
}


class Bread {
Bread(){
System.out.println("Bread()");
}
}


class Cheese {
Cheese(){
System.out.println("Cheese()");
}
}


class Lettue {
Lettue(){
System.out.println("Lettue()");
}
}


class Lunch extends Meal {
Lunch(){
System.out.println("Lunch()");
}
}


class PortableLunch extends Lunch {
PortableLunch(){
System.out.println("PortableLunch()");
}
}


public class demo1 extends PortableLunch {
private Bread bread = new Bread();
private Cheese cheese = new Cheese();
private Lettue lettue = new Lettue();
public demo1(){
System.out.println("demo1()");
}
public static void main(String[]args){
new demo1();
}

}


打印结果:

Meal()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettue()
demo1()


分析: 运行,进入demo1类的main方法,需要进行demo1的构造(生成),首先去调用基类的构造器,反复递归下去,然后初始化类中的成员,最后调用用户定义的demo1的构造方法.

补充:销毁顺序和构造顺序相反,就像资源的打开顺序和关闭顺序。

0 0