我很难理解 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。我的问题是o.super()
语法意味着 - 为什么它调用内部构造函数?
我只见过普通的super(args)
用于调用超类构造函数和super.method()
调用重写方法的超类版本,但绝不会采用以下形式instance.super()
.
这称为“合格的超类构造函数调用”。
引用自here http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.7.1:
显式构造函数调用语句可以分为两种:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)