在java中,我们可以通过传递超类方法中使用的参数的子类来覆盖方法吗?
2022-09-03 12:53:24
根据规则,在重写子类中的方法时,参数不能更改,并且必须与超类中的参数相同。如果我们在重写方法时传递参数的子类怎么办?它会被称为重载还是覆盖?
根据我的查询,我在下面写了一些代码。
我期待输出为“狗吃肉食”,但令我惊讶的是,输出是“动物吃肉食”如果有人可以解释当分配的对象类型为狗时,动物方法如何被调用,将不胜感激?
class Food {
public String toString(){
return "Normal Food";
}
}
class Flesh extends Food {
public String toString(){
return "Flesh Food";
}
}
class Animal {
public void eat(Food food){
System.out.println("Animal eats "+ food);
}
}
class Dog extends Animal{
public void eat(Flesh flesh){
System.out.println("Dog eats "+ flesh);
}
}
public class MyUtil {
public static void main(String[] args) {
Animal animal = new Dog();
Flesh flesh = new Flesh();
animal.eat(flesh);
}
}