3

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

4

1 回答 1

0

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

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

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

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

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

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

那为什么要允许private呢?因为私有成员仍然可以对其他可能访问内部类实例的类隐藏。

于 2012-10-17T04:27:21.390 回答