62,616
社区成员
发帖
与我相关
我的任务
分享
class Egg2 {
private Yolk y = new Yolk(); //构造父类实例时,先初始化成员变量 Yolk
//所以这里的 new Yolk();构造时调用了 Yolk类的构造方法,第 3 步打印出来就是 "Egg2.Yolk()", 构造父类完后.接着构造子类
// 构造方法
public Egg2() { //进入构造方法 , 第 2 步 打印出来就是 "New Egg2()"
System.out.println("New Egg2()");// 2
}
public void insertYolk(Yolk yy) {
y = yy;
}
public void g() {
y.f(); //调用了 Yolk.f()
}
//构造父类实例时,要初始化成员变量,所以这里也要初始化。所以第 1 步打印了 "Egg2.Yolk()"。
protected class Yolk {
// 构造方法
public Yolk() {
System.out.println("Egg2.Yolk()");// 1,3
}
public void f() {
System.out.println("Egg2.Yolk.f()");
}
}
}
public class BigEgg2 extends Egg2 {
// 构造方法
public BigEgg2() {
insertYolk(new Yolk());
}
public class Yolk extends Egg2.Yolk {
public Yolk() {
System.out.println("BigEgg2.Yolk()"); // 4
}
public void f() {
System.out.println("BigEgg2.Yolk.f()"); // 5
}
}
public static void main(String[] args) {
//构造 BigEgg2 实例是先构造父类 Egg2 的实例
Egg2 e2 = new BigEgg2();
e2.g(); //构造父类完后执行这个方法。
}
}