gpt4 book ai didi

java - 需要对 : Private Access modifier in java 进行解释

转载 作者:行者123 更新时间:2023-12-02 12:17:21 26 4
gpt4 key购买 nike

我在 Java 中有两个类:Fist 类扩展了 Person 类。我在 Person 中有一个私有(private)变量 eyecolor,它是私有(private)的,并且我有一个公共(public)的 setter 和 getter。

现在,如果我在 Fist 类中扩展它,那么我可以设置变量,也可以获取它。

我的问题是,如果 eyecolor 是类 Person 的私有(private)成员,为什么我没有收到使用私有(private)成员的错误?为什么这段代码有效? eyecolor 数据成员是否被继承?

人员类别

package lets_start;

public class Person {
private String eyecolor;

public String getEyecolor() {
return eyecolor;
}

public void setEyecolor(String eyecolor) {
this.eyecolor = eyecolor;
}
}

拳头级别

package lets_start;

public class Fist extends Person {
public static void main(String[] args) {
Fist f = new Fist();
f.setEyecolor("Brown");
System.out.println(f.getEyecolor());
}
}

输出:

Brown

最佳答案

要从子类访问/编辑它,请将字段设为 protected/package-private或使用您在 Person 中定义的 getter/setter .

参见https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

<小时/>

why I be able to access it from its child classam not getting an error of using a private member? Why is this code working? Is the eyecolor data member get's inherited?

因为您通过 public 访问它getter/setter 继承自 Person 。为了更清楚地说明,eyecolor field 不是继承的,getter/setter 是继承的。

如果不清楚,请随时编辑您的问题或评论。

关于java - 需要对 : Private Access modifier in java 进行解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46057634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com