多态在开发中的作用(案例引入)

目录

题目

不使用多态机制

使用多态机制

总结多态的作用


题目

        编写程序模拟主人喂养宠物的场景,要求编写主人类Master,宠物有狗类(Dog)、 猫类(Cat),主人应该有喂养宠物的方法(feed),宠物应该有吃的方法(eat),只要主人喂宠物,宠物就吃。要求达到可以喂养多种宠物。

不使用多态机制

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

//主人类
class Master {
    public void feed(Dog d) {
        d.eat();
    }
    public void feed(Cat c) {
        c.eat();
    }
}

//狗类
class Dog {
    public void eat() {
        System.out.println("狗狗喜欢啃骨头,吃的很香");
    }
}

//猫类
class Cat {
    public void eat() {
        System.out.println("猫咪喜欢抓老鼠吃");
    }
}

​

运行结果:

         但是我们分析一下,上面的代码貌似看起来很简单,没有冗余,但是现在这个主人又有了新的需求,他还想养一只鸟儿,那我们不但要添加一个鸟类,还要修改主人类,给主人类再添加一个喂养鸟儿的方法,这样显得很麻烦,代码的耦合度很高,扩展性低。

使用多态机制

        下面我们使用多态机制来做这道题目:引入一个宠物类(Pet)作为父类。

public class Test05 {
    public static void main(String[] args) {
        Dog d = new Dog();
        Cat c = new Cat();
        Brid b = new Brid();
        Master m = new Master();
        m.feed(d);
        m.feed(c);
        m.feed(b);
    }
}

//主人类
class Master {
    public void feed(Pet p) {
        p.eat();
    }
}

//宠物类
class Pet {
    public void eat() {

    }
}

//狗类
class Dog extends Pet {
    public void eat() {
        System.out.println("狗狗喜欢啃骨头,吃的很香");
    }
}

//猫类
class Cat extends Pet {
    public void eat() {
        System.out.println("猫咪喜欢抓老鼠吃");
    }
}

//鸟类
class Brid extends Pet {
    public void eat() {
        System.out.println("小鸟喜欢吃虫子,这对人们很有好处");
    }
}

运行结果:

总结多态的作用

        多态机制在我们的开发中很常见,它能够降低程序的耦合度,提高程序的扩展性。拿上面的案例来说,主人后来还想养一只鸟,这代表实际中客户的新需求。我们得满足客户的这个需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿ls

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值