有稍微有点明白了,那是不是说如果继承内部类的子类也是内部类,只要它的外围类拥有其基类的对象,那它就不用特地在构造函数里去建立外围类对象? 是不是把第一个程序改成这样就是正确的: //: InheritInner.java // Inheriting an inner class class WithInner { class Inner {} } public class InheritInner extends WithInner.Inner { WithInner wi = new WithInner();// 子类的外围类在这里建立了基类外围类的对象 InheritInner() {} // 子类的构造函数可以从外围类获得其基类外围类对象的引用? public static void main(String[] args) { WithInner wi = new WithInner(); InheritInner ii = new InheritInner(wi); } } ///:~
上个回复的代码错了,应该是: //: BigEgg2.java //Proper inheritance of an inner class class Egg2 { protected class Yolk { public Yolk() { System.out.println("Egg2.Yolk()"); } public void f() { System.out.println("Egg2.Yolk.f()"); } } private Yolk y = new Yolk(); public Egg2() { System.out.println("New Egg2()"); } public void insertYolk(Yolk yy) { y = yy; } public void g() { y.f(); } } public class BigEgg2 { Egg2 egg2 = new 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()); } public static void main(String[] args) { Egg2 e2 = new BigEgg2(); e2.g(); } } ///:~ 可是我试了一下还是不行啊! 各位高手帮忙!
是不是把第一个程序改成这样就是正确的:
//: InheritInner.java
// Inheriting an inner class class WithInner {
class Inner {}
} public class InheritInner
extends WithInner.Inner {
WithInner wi = new WithInner();// 子类的外围类在这里建立了基类外围类的对象
InheritInner() {} // 子类的构造函数可以从外围类获得其基类外围类对象的引用?
public static void main(String[] args) {
WithInner wi = new WithInner();
InheritInner ii = new InheritInner(wi);
}
} ///:~
//: BigEgg2.java
//Proper inheritance of an inner class class Egg2 {
protected class Yolk {
public Yolk() {
System.out.println("Egg2.Yolk()");
}
public void f() {
System.out.println("Egg2.Yolk.f()");
}
}
private Yolk y = new Yolk();
public Egg2() {
System.out.println("New Egg2()");
}
public void insertYolk(Yolk yy) { y = yy; }
public void g() { y.f(); }
} public class BigEgg2 {
Egg2 egg2 = new 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()); }
public static void main(String[] args) {
Egg2 e2 = new BigEgg2();
e2.g();
}
} ///:~
可是我试了一下还是不行啊!
各位高手帮忙!