简体   繁体   English

私有成员不被继承。 那么,getter和setter如何访问子类中的私有字段?

[英]private members are not inherited. then how getters and setters able to access private fields in subClass?

i have read from almost every source that private members are not inherited. 我从几乎所有来源都读到私有成员没有被继承。 Then how getters and setters of these private fields able to access private fields in subClass? 那么这些私有字段的getter和setter如何能够访问subClass中的私有字段?

here is my code which is working fine. 这是我的代码,可以正常工作。

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());
  }
}

Output is: first second 输出为:第一秒

When you write code this way, your PrivateFieldTestingUsingGettersAndSetters is not accessing its First parent's private data members. 当您以这种方式编写代码时,您的PrivateFieldTestingUsingGettersAndSetters 不会访问其First父级的私有数据成员。

It is calling public methods on parent First that have access to its private data members. 呼吁家长公共方法First可以访问它的私有数据成员。 The parent class always has access to its state. 父类始终有权访问其状态。

If you change private to protected in First for class members, it means that classes that extend First can have full access without getters or setters. 如果您将Class成员的“ private更改为“ First protected ,则意味着扩展First的类可以具有完全访问权限,而无需getter或setter。 Classes that don't inherit from First do not have access to protected members. 不从First继承的类无权访问protected成员。

If you don't supply setters in First , and make First members private final , it makes First immutable . 如果您不提供First设置者,并且将First成员private final ,则First 身份不变 (That's very good for thread safety.) (这对于线程安全性非常好。)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在不使用setter的情况下从子类访问父类中的私有字段? - How to access private fields in superclass from a subclass without using setters? 私有字段是否由子类继承? - Are private fields inherited by the subclass? 如何防止在同一个 class 中直接访问 getter/setter 之外的私有成员? - How to prevent direct access to private members outside of getters/setters in the same class? java:带有getter和setter的`volatile`私有字段 - java: `volatile` private fields with getters and setters superClass的私有成员是否由子类继承... Java? - Are the private members of superClass inherited by a subClass… Java? 为什么私有成员实际上是由子类继承的 - Why private members are actually inherited by subclass 实例是否应该使用setter / getter访问其自己的私有数据成员? - Should instances use setters/getters for accessing their own private data members? 使用 getter 还是直接访问私有成员更好? - Is it better to use getters or to access private members directly? 使私有字段在继承的子类中可见 - make private fields visible within inherited subclass Java Json Jackson保存没有getter和setter的私有字段 - Java Json Jackson saving private fields without getters and setters
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM