小编Adi*_*ari的帖子

通过传递子类的实例来调用超类的方法,期望子类实例上有超类参数

谁能解释一下下面代码的输出,以及这里涉及的Java原理是什么?

class Mammal {
    void eat(Mammal m) {
        System.out.println("Mammal eats food");
    }
}

class Cattle extends Mammal{
    void eat(Cattle c){
        System.out.println("Cattle eats hay");
    }
}

class Horse extends Cattle {
    void eat(Horse h) {
        System.out.println("Horse eats hay");
    }
}

public class Test {
    public static void main(String[] args) {
        Mammal h = new Horse();
        Cattle c = new Horse();
        c.eat(h);
    }
}
Run Code Online (Sandbox Code Playgroud)

它产生以下输出:

Mammal eats food
Run Code Online (Sandbox Code Playgroud)

我想知道我们是如何得到上述结果的。

java oop inheritance overriding overloading

2
推荐指数
1
解决办法
139
查看次数

标签 统计

inheritance ×1

java ×1

oop ×1

overloading ×1

overriding ×1