1

这是一个初学者的问题,但我搜索了一下,似乎找不到答案。

假设我有一个班级人:

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

4

2 回答 2

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);
      }
}
于 2015-11-26T05:23:16.247 回答
0

似乎实际发生的是,当我创建一个 OldMan 对象时,它会创建 SSN 字段但是......它以某种方式属于一个 Person 对象?

是的。确切地。

我意识到我可以让 SSN 受到保护,但这是最佳做法吗?

确切地。这就是受保护的工作方式,您可以安全地使用它。

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

正如您刚才所说,让他们保护,现在他们只能通过儿童和包装中的方式访问。

于 2015-11-26T05:26:00.767 回答