我遇到了一个相当奇怪的行为,不确定这是 Java 问题还是 Eclipse 的问题。
采取以下代码:
class Foo {
private String text;
public void doStuff(Foo f) {
System.out.println(f.text);
}
}
这里的问题是,为什么 f.text 可以访问?这是一个私有字段,所以按照我的逻辑,它不应该是,但 IDE 似乎认为它是。
这是设计使然。私有字段可以在同一个类中访问,即使是不同的实例. See here了解更多详细信息以及 Oracle 对此的官方声明。自从doStuff
是的成员Foo
,任何私有字段Foo
可以访问它。
private 修饰符指定该成员只能在其所属的范围内访问自己的班级 [即使来自不同的实例]。 [强调我的]
现在,下面的代码示例not工作由于text
的可见性修饰符:
class Bar{
public int baz;
public void doMoreStuff(Foo f){
System.out.println(f.text);
}
}
因为 doMoreStuff 定义在Bar
, not Foo
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)