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
对象引用传递给要编译的 .java 文件的SubclassC
构造函数? - 为什么不需要将
InnerA
对象引用传递给SubclassC
构造函数?
最佳答案
Why do I need to pass OuterA object reference to SubclassC constructor for the .java file to compile?
因为 SubclassC
扩展 InnerA
类的定义。同时,InnerA
类绑定(bind)到OuterA
(即InnerA
的所有实例都将绑定(bind)到相应的实例OuterA
)。因此,要获得SubclassC
的实例,您需要一个OuterA
的实例。
Why is InnerA object reference not required to be passed to SubclassC constructor?
因为在创建 SubclassC
时,在底层会首先创建其父类(super class)的一个实例,即会有一个 InnerA
的实例。实际上,您可以将 SubclassC
视为 特殊 类型的 InnerA
。
关于java - 为什么我需要提供封闭类对象而不是封闭类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287037/