这是一个初学者的问题,但我已经搜索过,似乎无法找到答案。
说我有一个班主任:
class Person {
private String SSN;
//blah blah blah...
}
然后我创建一个子类OldMan:
class OldMan inherits Person {
//codey stuff here...
public void setSSN(String newSSN) {
SSN = newSSN;
}
}
看起来我实际上无法从Person更改私有字段。我的印象是,当OldMan继承Person时,它将拥有自己的私有变量副本。实际上发生的事情似乎是当我创建一个OldMan对象时,它会创建一个SSN字段但是......它某种程度上属于一个Person对象?
我意识到我可以保护SSN,但这是最佳做法吗?实际上在这里发生了什么,以及如何创建一个将重要字段访问受保护的父类,而不保护它们不受子类的影响?
答案 0 :(得分:2)
你可以做点什么,
class Person {
private String SSN;
//blah blah blah...
public String getSSN() {
return SSN;
}
public void setSSN(String sSN) {
SSN = sSN;
}
}
public class OldMan extends Person {
//codey stuff here...
public void setSSN(String newSSN) {
super.setSSN(newSSN);
}
}
答案 1 :(得分:0)
似乎实际发生的事情是,当我创建一个OldMan对象时,它会创建一个SSN字段但是......它某种程度上属于一个Person对象?
是。究竟。
我意识到我可以保护SSN,但这是最佳做法吗?
完全。这就是受保护的方式,你可以安全地使用它。
这里实际发生了什么,以及如何创建一个将重要字段访问受保护的父类,而不保护它们不受子类的影响?
正如您刚才所说,让它们保护,现在只能由儿童和包裹进入。