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

时间:2015-03-18 15:31:11

标签: java class

在阅读java Doc时,我得到了以下内容。

  1. 内部类C是类O的直接内部类,如果O是C的直接词汇封闭类,并且C的声明不在静态上下文中出现
  2. 所以,如果我写

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

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

    我也有一些要点。

    2.如果类是C的第n-1个词汇封闭类的直接封闭类,则类O是C类的第n个词汇封闭类。

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

    4.对象o是第0个词汇封闭的自身实例。

    5.对象o是实例i的第n个词汇封闭实例,如果它是n-1个词汇封闭的i实例的直接封闭实例。

    6.内部类I的实例,其声明发生在静态上下文中,没有词法封闭的实例。但是,如果我在静态方法或静态初始化程序中立即声明,那么我确实有一个封闭块,这是最内部的块语句,用词条方式包含I的声明。

    7.对于C的每个超类S本身是类SO的直接内部类,有一个与i关联的SO实例,称为关于S的直接封闭的i实例。立即封闭的实例一个关于它的类的对象'直接超类(如果有的话)是在通过显式构造函数调用语句调用超类构造函数时确定的。

    8.当内部类(其声明未在静态上下文中出现)引用作为词法封闭类的成员的实例变量时,将使用相应的词法封闭实例的变量。

    请用简单的术语解释这些内容,因为在阅读这些内容时它似乎已经非常混乱了

1 个答案:

答案 0 :(得分:4)

它们都是OInner1Inner2的立即词汇封闭类。

请注意“ a

  

如果O是,则内部类C是 a 类O的直接内部类   立即词汇封闭C类和C的声明   不会出现在静态上下文中

不一定是单一的。可能有很多。