内/外课obj.new

时间:2013-08-13 21:16:30

标签: java

这是在类外部调用的成员内部类的示例。

//Program of memeber inner class that is invoked outside a class

class Outer {
    private int data=10;

    class Inner {
        void msg() {
            System.out.println("Data: " + data);
        }
    }
}

class Test {
    public static void main(String args[]) {
          Outer obj=new Outer();
          Outer.Inner in = obj.new Inner();
          in.msg();
    }
}

有人可以解释这行代码:Outer.Inner in = obj.new Iner(); obj.new Inner()是什么意思?

2 个答案:

答案 0 :(得分:3)

了解OuterInner是相关的很重要。更具体地说,您需要 Outer实例才能创建Inner实例。

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

Inner obj实例创建Outer实例。您可以看到这两者相关,因为msg() in方法会使用obj的{​​{1}}字段: data使用in的州。如果objInner,则与static没有任何关系,因此您可以使用

Outer

当然,在您的情况下,您不能简单地将Outer.Inner in = new Outer.Inner(); // no Outer instance needed 设为静态,因为它使用Inner字段。

答案 1 :(得分:2)

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

使用outer对象的引用为Iner类创建对象,因为InerOuter类的一部分。这是more information