我几乎从每个来源都读到私人成员没有被继承。那么这些私有字段的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());
}
}
输出是: 第一 第二
答案 0 :(得分:4)
当您以这种方式编写代码时,PrivateFieldTestingUsingGettersAndSetters
不访问其First
父代私有数据成员。
在父First
上调用 public 方法,这些方法可以访问其私有数据成员。父类始终可以访问其状态。
如果您在private
中为类成员更改protected
到First
,则意味着扩展First的类可以拥有完全访问权限而无需getter或setter。不从First
继承的类无权访问protected
成员。
如果您未在First
中提供制定者,并且First
成员private final
,则会First
不可变。 (这对于线程安全非常有用。)