我在 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/