Mar*_*ius 4 java methods private access-modifiers
我遇到了一个相当奇怪的行为,并且不确定这是Java问题还是Eclipse问题.
请使用以下代码:
class Foo {
private String text;
public void doStuff(Foo f) {
System.out.println(f.text);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,为什么f.text可以访问?这是一个私有领域,所以根据我的逻辑,它不应该,但IDE似乎认为它是.
ζ--*_*ζ-- 13
这是设计的.即使是不同的实例,也可以在同一个类中访问私有字段.有关详细信息,请参阅此处以及Oracle对此的正式声明.既然doStuff是其成员Foo,Foo则可以访问任何私有字段.
private修饰符指定只能在自己的类中访问该成员[ 甚至来自不同的实例 ].[强调我的]
现在,下面的代码示例并没有因工作text的知名度修改:
class Bar{
public int baz;
public void doMoreStuff(Foo f){
System.out.println(f.text);
}
}
Run Code Online (Sandbox Code Playgroud)
因为doMoreStuff是定义的Bar,而不是Foo.
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |