在顶部stackoverflow回答这个问题(Why are instance variables in Java always private?)时,有人说如果你有以下带有私有字符串的类,
class Address {
private String phone;
}
然后您无法使用以下代码修改私有字符串,但我尝试了它并且它可以正常工作。
// main method
Address a = new Address();
a.phone="001-555-12345";
他说你必须使用setter方法,但我没有使用它。
我想我误解了他的答案,但我不知道怎么回事。我要感谢任何见解,谢谢。
答案 0 :(得分:2)
您的主要方法必须在 您的地址类中才能使用,因为私有字段只能在 声明它们的类中访问。尝试更改您的代码,以便主方法位于其他地方(通常是这种情况),它将不再有效。
例如,这有效:
class Address {
private String phone;
public static void main(String[] args) {
Address a = new Address();
a.phone="001-555-12345"; // this works fine -- it's within Address
}
}
但请保留上述代码并尝试以下代码:
class TestAddress {
public static void main(String[] args) {
Address a = new Address();
a.phone="001-555-12345"; // won't compile since it's not within Address class
}
}