这个问题在这里已经有答案了:
在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();
}
}
产出:动物
1条答案
按热度按时间yhqotfr81#
当你在一个类的示例上调用一个方法时,java会首先在子类中找到这个方法,如果找不到,它会在超类中寻找这个方法。
在你的密码里,当你打电话的时候
r.showName()
,它将首先在rabbit类中检查该方法,由于在那里找不到该方法,它将检查超类animal。它在动物身上找到它,所以它运行它在那里找到的方法。如果你愿意的话
r.showName()
要说rabbit,必须重写rabbit类中的方法。