我知道要实例化成员内部类,您有两个不同的构造函数:
First:
Outer out = new Outer();
Outer.Inner in = out.new Inner();
Second:
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
类,就像你的例子一样:
Outer.Inner in = new Outer().new Inner();
只需引用即可实例化Inner
:
Inner in = new Inner();
这适用于类中的所有实例方法,只要它们不是静态的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)