多态的问题

来源:10-1 Java 中的多态

慕瓜7080925

2016-07-20 17:30

public class Demo {

    public static void main(String[] args){

        Master ma = new Master();

        ma.feed(new Animal(), new Food());

        ma.feed(new Cat(), new Bone());

        ma.feed(new Dog(), new Fish());

    }

}

class Animal{

    public void eat(Food f){

        System.out.println("我是一个小动物,正在吃" + f.getFood());

    }

}

class Cat extends Animal{

    public void eat(Food f){

        System.out.println("我是一只小猫咪,正在吃" + f.getFood());

    }

}

class Dog extends Animal{

    public void eat(Food f){

        System.out.println("我是一只狗狗,正在吃" + f.getFood());

    }

}

class Food{

    public String getFood(){

        return "事物";

    }

}

class Fish extends Food{

    public String getFood(){

        return "鱼";

    }

}

class Bone extends Food{

    public String getFood(){

        return "骨头";

    }

}

class Master{

    public void feed(Animal an, Food f){

        an.eat(f);

    }

}


写回答 关注

2回答

  • Smile丶微冷
    2016-07-24 15:02:09
    已采纳

    Cat,Dog继承于Animal,可以使用Animal类型的变量来引用Cat和Dog的对象,Food类似。以ma.feed(new Cat(), new Bone());为例,feed(Animal an, Food f),an是Animal类型的变量,引用了Cat的对象,即可以使用Cat对象中所有从Animal继承的方法,而an实际引用的是Cat而不是Animal,所以调用方法时调用的就是Cat中的方法。Food的情况类似。

    Smile丶... 回复慕瓜7080...

    不客气~

    2016-07-24 15:25:53

    共 2 条回复 >

  • 慕瓜7080925
    2016-07-20 17:38:59

    有谁能解释一下怎么实现的

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530105 学习 · 6086 问题

查看课程

相似问题