多态的应用

文章通过对比非多态和多态实现的喂养动物功能,展示了多态的优势。在非多态实现中,每次添加新动物类型都需要修改主类;而在多态实现中,通过动物类的继承和方法重写,只需保证新动物类继承自Animal并覆写eat()方法,就能实现业务扩展,降低了代码维护的复杂性。
摘要由CSDN通过智能技术生成

多态的应用

  • 以前对多态的概念总是感觉很晦涩,以及不太明白应用场景

非多态实现 人工喂养动物功能

public class Master {
    public static void main(String[] args) {
        Master master = new Master();
        master.feed(new Dog());
        master.feed(new Cat());
    }

    public void feed(Dog dog) {
        dog.eat();
    }

    public void feed(Cat cat) {
        cat.eat();
    }
}

class Dog {

    public void eat() {
        System.out.println("狗在吃");
    }
}

class Cat {

    public void eat() {
        System.out.println("猫在吃");
    }
}

总结
由于master 直接维护各个动物,所有每次新增一种动物,就得新增一个对应动物的 feed(),代码为了满足业务,总需要在主类中修改.一旦业务复杂,就可能影响稳定性

多态实现 人工喂养动物功能

public class Master2 {
    public static void main(String[] args) {
        Master2 master2 = new Master2();
        master2.feed(new Dog1());
        master2.feed(new Cat1());
    }

    public void feed(Animal animal) {
        animal.eat();
    }
}

class Animal {

    public void eat() {
        System.out.println("动物在吃");
    }
}

class Dog1 extends Animal {

    @Override
    public void eat() {
        System.out.println("狗在吃");
    }
}

class Cat1 extends Animal {

    @Override
    public void eat() {
        System.out.println("猫在吃");
    }
}

总结
由于master2 直接维护了 Animal,每次新增一种动物,只要动物继承了Animal,且重载了eat()方法,即可
多态的本质是 继承 + 子父类方法的重写,业务扩展时,影响最小,主类,父类都不用调整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值