构造器多态

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、调用派生类构造器的主体。

你可能感兴趣的:(C++,c,C#)