2011-11-16 24 views
2

我是Java新手。我是一名C++程序员,阅读一些Java代码。我有这个类的定义:在java中获取对包含类的引用

class Container { 
    long ID; 

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

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

我有一个问题:

这是怎么回事?在C++中,这些类将不相关。但在Java中,似乎所包含的类对象似乎隐含地与父类对象的实例绑定在一起。

感谢 马尼什

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

回答

3

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

如果你已经宣布Containedstatic,它会模仿C++使用你是更习惯 - 也就是说,你可以有嵌套类的实例,而无需的Container一个实例。

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

0

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