私人成员不是继承的。那么getter和setter如何能够访问subClass中的私有字段?

时间:2014-11-12 21:42:17

标签: java oop private-members

我几乎从每个来源都读到私人成员没有被继承。那么这些私有字段的getter和setter如何能够访问subClass中的私有字段?

这是我的代码工作正常。

class First{
private String first;
public String getFirst() {
    return first;
}

public void setFirst(String first) {
    this.first = first;
 }
}


public class PrivateFieldTestingUsingGettersAndSetters extends First{
private String second;
public String getSecond() {
    return second;
}
public void setSecond(String second) {
    this.second = second;
}

public static void main(String[] args){
    PrivateFieldTestingUsingGettersAndSetters ob1=new PrivateFieldTestingUsingGettersAndSetters();
    ob1.setFirst("first");
    ob1.setSecond("second");
    System.out.println(ob1.getFirst());
    System.out.println(ob1.getSecond());
  }
}

输出是: 第一 第二

1 个答案:

答案 0 :(得分:4)

当您以这种方式编写代码时,PrivateFieldTestingUsingGettersAndSetters 访问其First父代私有数据成员。

在父First上调用 public 方法,这些方法可以访问其私有数据成员。父类始终可以访问其状态。

如果您在private中为类成员更改protectedFirst,则意味着扩展First的类可以拥有完全访问权限而无需getter或setter。不从First继承的类无权访问protected成员。

如果您未在First中提供制定者,并且First成员private final,则会First 不可变。 (这对于线程安全非常有用。)