根据规则,在覆盖子类中的方法时,参数不能更改,并且必须与超类中的参数相同.如果我们在重写方法时传递参数的子类怎么办?是否会被称为超载或覆盖?
根据我的查询,我在下面写了一些代码.
我期待输出为"狗吃肉食"但令我惊讶的是输出是"动物吃肉食"如果有人可以解释当分配的对象是Dog类型时动物方法如何被调用,我将不胜感激?
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);
}
}
Run Code Online (Sandbox Code Playgroud)