这个关键字在抽象类中如何工作

问题描述 投票:0回答:1

请原谅我的代码,只关注这里的问题:

我们知道私有字段不是继承的,当我在第 #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”关键字在抽象类中如何工作。我尽力准确地发布问题。

java inheritance polymorphism abstract-class private
1个回答
0
投票

它之所以有效,是因为 setter 是继承的,这被标记为

public
。这些变量实际上也是“继承的”,即使它们被标记为
private
。您只是无法从子类直接访问它们。

允许使用

public
方法访问它们,就像您在此处所做的那样。

© www.soinside.com 2019 - 2024. All rights reserved.