请原谅我的代码,只关注这里的问题:
我们知道私有字段不是继承的,当我在第 #2 行创建对象时,正在为 Person 创建对象,然后当我设置fatherName时,在 setFatherName() 中 **this ** “这是对象” of person" 具有设置测试类 privatefatherName 的可见性?
抽象类测试{ 私有字符串父亲名称;
public void setFatherName(String fatherName){
System.out.println(this.getClass().getSimpleName());
this.fatherName=fatherName;
}
public String getFatherName(){
return fatherName;
}
}
公共类 Person 扩展测试{
public static void main(String[] args) {
Test person = new Person(); // #2
person.setFatherName("Jimmy");
System.out.println("father name is : " +person.getFatherName());
}
}
输出: 人 父亲名字是:吉米
我理解我是用 setter 间接执行此操作的上下文,但由于对象是 Person ,因此“this”关键字在抽象类中如何工作。我尽力准确地发布问题。
它之所以有效,是因为 setter 是继承的,这被标记为
public
。这些变量实际上也是“继承的”,即使它们被标记为 private
。您只是无法从子类直接访问它们。
允许使用
public
方法访问它们,就像您在此处所做的那样。