获取java中包含类的引用

时间:2011-11-16 13:17:46

标签: java

我是Java新手。我是一名C ++程序员,正在阅读一些Java代码。我有这个类定义:

class Container {
    long ID;

    class Contained {
        void foo(){
            long parentID = ID;
        }
    }
}

我看到Contained可以通过名称访问Container类的任何成员。

我有一个问题:

这里发生了什么?在C ++中,这些类是不相关的。但在Java中,似乎包含的类对象似乎隐含地绑定到父类对象的实例。

由于 和Manish

PS:对不起,我知道我可以拿一本关于Java的书,但我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:3)

在Java中,这些称为嵌套类。有几种类型的嵌套类具有不同的语义。有http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html的信息。

在您的示例中,它是一个内部类,因此它的实例在外部类的实例中存在

答案 1 :(得分:3)

由于Contained类未声明为static,这意味着它只能存在于Container类的实例中,因此可以访问所有方法和变量Container

如果您已将Contained声明为static,那么它会模仿您更习惯的C ++用法 - 也就是说,您可以拥有嵌套类的实例而无需实例Container

有关详细信息,请参阅Java inner class and static nested class

答案 2 :(得分:0)

这是一个嵌套类。它的生命周期与父类相关联。阅读here以获得完全理解。