我知道实例化一个成员内部类,你有两个不同的构造函数:
第一:
Outer out = new Outer();
Outer.Inner in = out.new Inner();
第二:
Outer.Inner in = new Outer().new Inner();
现在,我不知道为什么这样的代码编译:
public class Outer {
private String greeting="Hi";
protected class Inner {
public int repeat=3;
public void go() {
for (int i =0; i<repeat; i++) {
System.out.println(greeting);
}
}
}
public void callInner() {
Inner in = new Inner(); //in my opinion the correct constructor is Outer.Inner in = new Inner()
in.go();
}
public static void main(String[] args) {
Outer out = new Outer();
out.callInner();
}
}
为什么把它编译?
非常感谢!
当你在实例Inner
的范围内Outer
(实例方法中的),你并不需要显式实例引用Outer
CLAS,就像在你的例子:
Outer.Inner in = new Outer().new Inner();
它是细而无法通过只引用实例化Inner
:
Inner in = new Inner();
这适用于一个类中的所有实例方法,只要他们不是一成不变的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句