java子类如何继承受访问保护的父字段?

时间:2015-11-26 05:19:07

标签: java inheritance access-protection

这是一个初学者的问题,但我已经搜索过,似乎无法找到答案。

说我有一个班主任:

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,但这是最佳做法吗?实际上在这里发生了什么,以及如何创建一个将重要字段访问受保护的父类,而不保护它们不受子类的影响?

2 个答案:

答案 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,但这是最佳做法吗?

完全。这就是受保护的方式,你可以安全地使用它。

  

这里实际发生了什么,以及如何创建一个将重要字段访问受保护的父类,而不保护它们不受子类的影响?

正如您刚才所说,让它们保护,现在只能由儿童和包裹进入。