如果我在内部类中将变量声明为私有,则该变量对外部类可见。我无法理解这里的逻辑。理想情况下,它不应该只能在内部类中访问吗?
问问题
146 次
1 回答
0
我认为答案是主观的,因为问题基本上似乎是在问为什么 Sun/Oracle 的语言设计者决定允许某种行为。
也就是说,这是一个答案的尝试......
首先是一些术语,在类中声明的类是嵌套类。内部类是非静态嵌套类,它必须驻留在外部类的实例中。所以内部类是外部类的一部分,从这个意义上说,内部类的所有成员在一定程度上都是外部类的成员。
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
与实例方法和变量一样,内部类与其封闭类的实例相关联,并且可以直接访问该对象的方法和字段。此外,由于内部类与实例相关联,它本身不能定义任何静态成员。
另一个想法是,内部类的有效用例排除了允许内部类对外部类隐藏成员的必要性。也就是说,没有外部类不会与内部类耦合的概念。
那为什么要允许private
呢?因为私有成员仍然可以对其他可能访问内部类实例的类隐藏。
于 2012-10-17T04:27:21.390 回答