本帖最后由 java2000_net 于 2008-08-05 06:37:16 编辑

解决方案 »

  1.   

    有稍微有点明白了,那是不是说如果继承内部类的子类也是内部类,只要它的外围类拥有其基类的对象,那它就不用特地在构造函数里去建立外围类对象?
    是不是把第一个程序改成这样就是正确的:
    //: 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); 
      } 
    } ///:~
      

  2.   

    上个回复的代码错了,应该是:
    //: 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(); 

    } ///:~ 
    可是我试了一下还是不行啊!
    各位高手帮忙!