java—当子类调用父类方法时,为什么要打印父类变量?

1u4esq0p  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(303)

这个问题在这里已经有答案了

在java中重写成员变量(变量隐藏)(12个答案)
5小时前关门了。
什么时候 showName() 用rabbit类对象调用它调用 showName() 继承自动物类并打印动物类名变量。

class Animal{ 
  String name="animal";

  void showName() {  
    System.out.println(this.name);
  }

}

class Rabbit extends Animal {
  String name="rabbit";
}

public class Main
{
    public static void main(String[] args) {
        Animal a = new Animal();
        a.showName();
        Rabbit r = new Rabbit();
        r.showName();
    }
}

产出:动物

yhqotfr8

yhqotfr81#

当你在一个类的示例上调用一个方法时,java会首先在子类中找到这个方法,如果找不到,它会在超类中寻找这个方法。
在你的密码里,当你打电话的时候 r.showName() ,它将首先在rabbit类中检查该方法,由于在那里找不到该方法,它将检查超类animal。它在动物身上找到它,所以它运行它在那里找到的方法。
如果你愿意的话 r.showName() 要说rabbit,必须重写rabbit类中的方法。

相关问题