java中的内部类和封装实例



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

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

所以如果我写

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个词汇封闭实例的直接封闭实例,则对象o是该实例的第n个词汇封闭例子。

6.声明发生在静态上下文中的内部类I的实例没有词汇封闭实例。然而,如果I立即在静态方法或静态初始值设定项中声明,那么我确实有一个封闭块,它是从词法上封闭I声明的最内部的块语句。

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

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

请简单地向我解释这些事情,因为在阅读这些时,它已经显得非常令人困惑

它们都是因为OInner1Inner2的直接词法封闭类。

注意"a"

内部类C是类O的直接内部类,如果O是C的立即词法封闭类和C的声明不会发生在静态上下文中

不一定只有一个。可能有很多。

最新更新