//: 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();
}
}
从输出结果来看:
初始化顺序如下:
先初始化父类成员变量,然后父类构造函数,然后子类成员变量,子类构造函数
博客展示了Java代码,体现了内部类的正确继承。定义了Egg2类及其内部类Yolk,还有继承自Egg2的BigEgg2类及内部类Yolk。从输出可知,初始化顺序为父类成员变量、父类构造函数、子类成员变量、子类构造函数。
909

被折叠的 条评论
为什么被折叠?



