基础:多态的理解

2019-04-17  本文已影响0人  Bitson

猫和狗两个类

class Cat {

}

class Dog {

}

假如主人要喂的话,在没有多态的情况下,主人要实现两个方法,分别针对猫和狗来喂

class Master {

    void feed(Dog dog) {}

    void feed(Cat cat) {}

}

这样的话,有多少类动物就需要写多少个喂的方法


有多态的话,Master可以这样实现

让猫和狗都继承一个Animal的父类

class Animal {

    void eat() {}

}

class Dog extends Animal {

    void eat() {}

}

class Cat extends Animal {

    void eat() {}

}

class Master {

    // 这里只需要实现一个参数为Animal的喂方法,只要传入的参数都遵循Animal的规则(必须实现那些方法)。就可以在不知道具体实现类(Dog或Cat)的情况下进行操作(feed)。那就可以只针对父类(或者接口)进行编程,针对父类(或接口)来编程的话,就算来更多不同类型的动物,代码都可以不用变化,只需要继承Animal类,并实现具体的子类就可以了。

    void feed(Animal animal) {

        animal.eat();

    }

}

public class Test {

    public static void main() {

        Master master = new Master();

        master.feed(new Dog());

        master.feed(new Cat());

    }

}

上一篇下一篇

猜你喜欢

热点阅读