Java中的内部类和封闭实例?

安库尔·阿南德(Ankur anand)

在阅读Java Doc时,我得到了一些注意事项。

  1. 如果O是C的直接按词法包围的类并且C的声明不在静态上下文中发生,则内部类C是类O的直接内部类。

所以如果我写

public class O{
    class Inner1{
        //
    }
    class Inner2{

    }
}

我的问题是在这两个内部类中,哪一个是O的直接内部类?

我也有一些要点。

2如果O类是C类的第n-1个词法包围类,则它是C类的第n个词法包围类。

3,类O的直接内部类C的实例i与O的实例相关联,被称为i的直接封闭实例。创建对象时,将确定对象的直接封闭实例(如果有)。

4.对象o是其本身的第零个词汇包围实例。

5,如果对象o是i的第n-1个词法包围实例的立即封闭实例,则它是实例i的第n个词法包围实例。

6,声明在静态上下文中发生的内部类I的实例没有词汇包围的实例。但是,如果在静态方法或静态初始化器中立即声明了I,则我确实有一个封闭的块,这是按词法将I的声明包含在内的最里面的块语句。

7,对于C的每个超类S本身都是SO类的直接内部类,都有一个与i关联的SO实例,称为i相对于S的i的立即包围实例。关于其类的直接超类(如果有)的信息,是通过显式构造函数调用语句调用超类构造函数时确定的。

8,当一个内部类(其声明不在静态上下文中发生)引用一个实例变量时,该实例变量是一个词法封装类的成员,则使用相应的词法封装实例的变量。

请简单地向我解释这些内容,因为在阅读这些内容时似乎已经很混乱了

Sotirios Delimanolis

他们都是因为O是最直接的词汇包含类两者的Inner1Inner2

注意“ a

如果O是C的直接按词法包围的类并且C的声明不在静态上下文中发生,则内部类C是类O直接内部类。

不一定有一个。可以有很多。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章