繁体   English   中英

为什么我们可以从外部类访问内部类中的变量?

[英]Why can we access a variable in an inner class from an outer class?

如果我在内部类中将变量声明为private,则该变量对外部类是可见的。 我无法理解这里的逻辑。 理想情况下,它是否只能在内部阶级中访问?

我认为答案是主观的,因为问题基本上似乎是在问为什么Sun / Oracle的语言设计师决定允许某种行为。

那就是说,这是一个尝试答案......

首先是一些术语,在类中声明的类是嵌套类。 内部类是非静态嵌套类,必须驻留在外部类的实例中。 所以内部类是外部类的一部分,在这个意义上,内部类的所有成员都是外部类的成员。

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

与实例方法和变量一样,内部类与其封闭类的实例相关联,并且可以直接访问该对象的方法和字段。 此外,由于内部类与实例相关联,因此无法定义任何静态成员本身。

另一个想法是内部类的有效用例排除了允许内部类隐藏外部类的成员的必要性。 也就是说,没有概念认为外部类不会耦合到内部类。

为什么要允许private呢? 因为私有成员仍然可以从其他类中隐藏,这些类可以访问内部类的实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM