作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下代码:
public class Foo
{
class Bar
{
private String barbar;
public Bar( String b ) { barbar = b; }
}
class Meh
{
Bar b = new Bar("BAR!");
public void displayName() {
System.out.println( b.barbar );
}
}
}
Java 允许类 Meh
访问私有(private)实例变量 barbar
,该变量在 Bar
中声明为 private
>.
我知道这个问题之前已经被问过here 。然而,答案只是基本上重申了观察到的范围是什么(barbar
可以在类Foo
的大括号内访问),但没有提供任何解释。经过一番谷歌搜索后,我无法对这种行为进行很好的讨论。我想知道的是这种范围界定行为是否有具体的理由。我希望 barbar
是类 Bar
的私有(private)“大括号内”。
最佳答案
其基本方面是 inner classes (与静态嵌套类相对)是其封闭类的一部分。它们并不与它分离,也不彼此分离。因此,就像封闭类的其他部分(构造函数和方法)可以访问其所有私有(private)信息一样,内部类的所有成员也是如此。从某种意义上说,内部类有点虚构,我们将其用作方便的抽象机制。由于内部类是封闭类的一部分,因此它们的私有(private)信息也是其私有(private)信息,因此与其他内部类共享。
关于java - 内部类中私有(private)变量的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171064/
我是一名优秀的程序员,十分优秀!