据我所知,如果我们在Java中重写了方法,那么被调用的第一个方法将被覆盖。在这种情况下,我已初始化Dog
对象,并调用方法f
,其中包含一个String。类Tomato
扩展了类Food
。但是为什么在这种情况下我得到的答案是null
,当它最后应该是 tomato 名称和 blee 时?
public class Animal {
String name;
public void f(Food t) {
System.out.println(t.name);
}
}
public class Dog extends Animal {
String name;
public void f(Tomato t) {
System.out.println(t.name + "blee");
}
}
这是电话:
番茄是食物的子类!
Tomato t = new Tomato();
t.name = "jdfjkgdlkg";
Animal amor = new Dog();
amor.f(t);
答案 0 :(得分:2)
overriden方法具有等于签名
此
public void f(Food t)
和这个
public void f(Tomato t)
是不同的方法
如果要覆盖方法,则应在Dog类中编写
public void f(Food t) {
System.out.println(t.name + "blee");
}