【发布时间】:2011-07-04 23:40:54
【问题描述】:
我的印象是私有非静态变量只能通过在变量所在的对象上调用的方法来访问,但事实并非如此。有人可以解释为什么以下编译和运行的原因吗?
public class Sandbox {
private String _privateString = "unmodified";
public static void setPrivateString(String str, Sandbox s) {
s._privateString = str;
}
public String toString()
{
return _privateString;
}
public static void main(String[] args) {
Sandbox s = new Sandbox();
setPrivateString("modified", s);
System.out.println(s);
}
}
输出:
modified
编辑:在 C# 中也是如此。
【问题讨论】:
-
您可以直接从
main()修改_privateString,因为它在同一类中。
标签: java variables static scope private