美文网首页
基础:多态的理解

基础:多态的理解

作者: Bitson | 来源:发表于2019-04-17 14:27 被阅读0次

    猫和狗两个类

    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());

        }

    }

    相关文章

      网友评论

          本文标题:基础:多态的理解

          本文链接:https://www.haomeiwen.com/subject/kcqnwqtx.html