下面是原代码`~~~~
package myclass;
class WithInner{
class Inner{
void f(){
System.out.println ("in Inner...");
}
}
}
public class InheritInner extends WithInner.Inner{
InheritInner(WithInner wi){
wi.super(); //????????????????
}
void f(){
System.out.println ("in InheritInner...");
}
public static void main(String[] args){
WithInner wi = new WithInner();
InheritInner ii = new InheritInner(wi);
ii.f();
}
}
wi.super()是撒意思呀`~~谢啦`~尽量详细些`~~

解决方案 »

  1.   

    因为你继承了WithInner的内部类,所以要在继承的类中使用构造函数时,默认的构造函数不能传递指向外部类的引用,每个内部类对象实际都包含外部类对象的引用,所以要wi.super(),提供对外部类的引用。
      

  2.   

    就是调用父类的构造方法,super()必须写在构造方法中的第一条语句上
    只要世内部类就可以无条件的使用外部类的任何成员
      

  3.   

    yuiff() ( ) 回答是对的内部类的无参构造函数都隐藏着一个外部类的引用参数你继承了内部类,在构造函数中调用父类super,必须自己传入此外部类引用,JAVA不能帮你自动处理了
      

  4.   

    不好意思,我有个疑问class WithInner{
    WithInner(){
    System.out.println("WithInner Contructor...");
    }
    class Inner{
    void f(){
    System.out.println("In Inner...");
    }
    }
    }public class InheritInnerextends WithInner.Inner{
    InheritInner(WithInner wi){
    wi.super();
    }

    void f(){
    System.out.println("In InheritInner...");
    }

    public static void main(String[] args){
    WithInner wi = new WithInner();
    InheritInner ii = new Test1(wi);
    ii.f();
    }

    }运行结果是:
    WithInner Contructor...
    In InheritInner...wi.super()如果是调用WithInner类的构造函数,那结果应该是
    WithInner Contructor...
    In InheritInner...请各位解释再详细点,谢谢:)
      

  5.   

    写错了,不好意思wi.super()如果是调用WithInner类的构造函数,那结果应该是
    WithInner Contructor...
    WithInner Contructor...
    In InheritInner...