4.多态

多态

0.英语单词

4.多态

1.为什么使用多态

1)问题的由来

需求变更

宠物系统中添加主人给宠物喂食功能,具体需求如下:

✧给Dog喂食,其健康值增加3,输出吃饱的信息

✧给Penguin喂食,其健康值增加5,输出吃饱的信息

分析

1)给抽象类Pet增加抽象方法eat()方法;

2)让Dog类重写Pet类的eat()方法,实现狗狗吃饭功能;

3)让Penguin类重写Pet类的eat()方法,实现企鹅吃饭功能

4)创建主人类Master,添加feed(Dog dog)方法,调用Dog类的eat()方法,实现狗狗的

喂养;添加feed(Penguin penguin)方法,调用Penguin类的eat()方法,实现企鹅的喂

养。

5)创建测试类Test,在类中创建主人、狗狗和企鹅对象,调用相应方法实现主人喂养

宠物的功能

实例1:Pet.java Dog.java Penguin.java Master.java Test.java

从实例的运行结果看,我们已经顺利实现了主人给宠物喂食的功能,但是,如果主人又领养了一只猫或更多的宠物,该如何实现给宠物喂食呢?

当然你可以添加一个Cat类,让其继承Pet类,重写eat()方法;然后在Master类中重载feed()方法,添加一个feed(Cat cat)方法。可是,如果添加更多的宠物呢,这样做的缺点是:代码频繁修改(每次都要修改Master类,添加feed()的重载方法),可扩展性、可维护性差(如果领养的宠物过多,Master类中就会有很多重载的feed()方法)。

2)怎么解决问题

如果能实现如下效果就好了:Master类中只有一个feed()方法,可以实现多有宠物的喂食,不管领养多少宠物,都不用修改Master类源码。

答案是肯定的,通过多态实现该效果。

相关推荐
相关主题
热门推荐