class Meal {
Meal() {
System.out.println("Meal()");
}
}
class Bread {
Bread() {
System.out.println("Bread()");
}
}
class Cheese {
Cheese() {
System.out.println("Cheese()");
}
}
class Lettuce {
Lettuce() {
System.out.println("Lettuce()");
}
}
class Lunch extends Meal {
Lunch() {
System.out.println("Lunch()");
}
}
class PortableLunch extends Lunch {
PortableLunch() {
System.out.println("PortableLunch()");
}
}
public class Sandwich extends PortableLunch {
private Bread b = new Bread();
private Cheese c = new Cheese();
private Lettuce l = new Lettuce();
public Sandwich() {
System.out.println("Sandwich()");
}
public static void main(String[] args) {
new Sandwich();
}
}
//输出结果为
Meal()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettuce()
Sandwich()
用其他类创造一个复杂的类,每个类都有自己的构造器。Sandwich类反映三个构造器,如果有Object,就有四个,这里没有。
对象调用构造器遵循以下顺序:
1、调用基类构造器;首先是根的构造器,然后是下一层的派生类的构造器,直到最底层的构造器为止。
2、按声明顺序调用成员的初始化
3、调用派生类构造器的主体。