class OuterA {
    class InnerA {
    }
}
class SubclassC extends OuterA.InnerA {
    SubclassC(OuterA outerRef) {
        outerRef.super();
    }
}
class XYZ {
    public static void main(String[] args) {
        new SubclassC(new OuterA());
    }
}

在上面的代码中
  • 为什么需要将OuterA对象引用传递给SubclassC构造函数,以便.java文件进行编译?
  • 为什么不需要将InnerA对象引用传递给SubclassC构造函数?
  • 最佳答案



    因为SubclassC扩展了InnerA类的定义。同时,InnerA类是绑定(bind)到OuterA(即InnerA的所有实例都将绑定(bind)到对应的OuterA实例)。因此,要获得SubclassC的实例,您需要一个OuterA的实例。



    因为在创建SubclassC时,将在幕后首先创建其父类(super class)的实例,即会存在InnerA的实例。实际上,您可以将SubclassC视为一种特殊的InnerA

    10-06 09:42