Java中内部类的对象

时间:2016-06-26 07:06:19

标签: java inner-classes

Java中内部类的对象具有外部对象的特殊句柄,即b。但是,外部对象对内部对象的访问权限不同。

这允许内部对象访问外部变量或方法,即使它们是私有的。

这些假设是否正确?

2 个答案:

答案 0 :(得分:1)

来自JLS

  

当一个内部类(其声明不在静态中发生)   context)指的是作为a的成员的实例变量   词汇封闭类,词汇对应的变量   使用封闭实例。

这意味着,YES,内部类可以访问封闭类的实例变量。

答案 1 :(得分:1)

private限制只能访问编译单元(源文件)的范围,因此同一文件中的所有类都可以访问彼此的私有成员,无论它们是否为内部类或不。

关于内部类的唯一特殊之处是(如你所说)它的每个实例引用外部类的特定实例,但是如果它以某种方式获得对另一个外部类实例的引用(例如作为参数)方法调用),它也可以访问其他实例的成员。类似地,如果外部类的实例以某种方式被赋予对内部类的实例的引用,则它可以访问其成员,即使它不“拥有”该特定内部类实例。