方式,通过外部类调用内部类

Adryr83:

我知道实例化一个成员内部类,你有两个不同的构造函数:

第一:

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(实例方法中的),你并不需要显式实例引用OuterCLAS,就像在你的例子:

Outer.Inner in = new Outer().new Inner();

它是细而无法通过只引用实例化Inner

 Inner in = new Inner();

这适用于一个类中的所有实例方法,只要他们不是一成不变的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章