本代码拷贝自《Java编程思想第四版》多态章节。
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("Luttuce()");} } 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()
Luttuce()
Sandwich()
可以看出对象调用构造器的顺序:调用基类构造器->按声明顺序调用成员的初始方法 ->调用构造器主体