gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:06:14 25 4
gpt4 key购买 nike

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

最佳答案

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

这就是说,这是对答案的尝试......

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

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

As with instance methods and variables, an inner class is associated with an instance of its enclosing class and has direct access to that object's methods and fields. Also, because an inner class is associated with an instance, it cannot define any static members itself.

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

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

关于java - 为什么我们可以从外部类访问内部类中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com