//: BigEgg2.java
// Proper inheritance of an inner class
import java.io.*;
class Egg2 {
protected class Yolk {
public Yolk() {
System.out.println("Egg2.Yolk()");
}
public void f() {
System.out.println("Egg2.Yolk.f()");
}
}
public Yolk y = new Yolk();
public Egg2() {
System.out.println("New egg()2");
}
public void insertYolk(Yolk yy) {
y = yy;
}
public void g() {
y.f();
}
}
public class BigEgg2 extends Egg2 {
public class Yolk extends Egg2.Yolk {
public Yolk() {
System.out.println("BigEgg2.Yolk()");
}
public void f() {
System.out.println("BigEgg2.Yolk.f()");
}
}
public BigEgg2() {
//insertYolk(new Yolk());
new Yolk();
}
public static void main(String[] args) {
Egg2 e2 = new BigEgg2();
//e2.g();
}
}
从输出结果来看:
初始化顺序如下:
先初始化父类成员变量,然后父类构造函数,然后子类成员变量,子类构造函数