需要如下定义
public class Outer {
public class Inner {
}
}
public class ExtendsInner extends Outer.Inner {
public ExtendsInner(Outer outer) {//必需
outer.super();
}
}
当创建一个子类时,子类构造器总会调用父类的构造器,因此在创建非静态内部类的子类时,必须
保证让子类构造器可以调用非静态内部类的构造器,调用非静态内部类的构造器时,必须存在一个外部类对象。
非静态内部类的构造器必须使用外部类对来调用,代码中super代表调用内部类的构造器,而outer则代表外部类对象, 所以需要一个Outer对象, 调用内部类构造器代码为outer.super();
更详细的可以参考
http://blog.csdn.net/guoying252166655/article/details/40454507