我很难理解Java中的非静态嵌套类。考虑以下示例,它将打印“Inner”和“Child”。
class Outer {
class Inner {
Inner() { System.out.println("Inner"); }
}
}
public class Child extends Outer.Inner {
Child(Outer o) {
o.super();
System.out.println("Child");
}
public static void main(String args[]) {
new Child(new Outer());
}
}
我知道 Inner 的实例必须始终与 Outer 实例相关联,并且由于 Child 扩展了 Inner,因此也适用于 Child。 我的问题是 o.super()
语法的含义 - 为什么它调用 Inner 构造函数?
我只看过使用 super(args)
来调用超类构造函数和 super.method()
调用覆盖方法的超类版本,但从未见过形式为 instance.super()
的内容。