Java多态练习题
需求:
宠物饿了,需要铲屎官给宠物喂食。
- 不同宠物吃的东西不一样。
- 不同宠物恢复后体力值不一样。
-
铲屎官和狗狗玩接飞盘游戏,狗狗健康值减少10,与铲屎官亲密度增加5
-
铲屎官和 企鹅玩游泳游戏,企鹅健康值减少10,与铲屎官亲密度增加5
分析:
- 宠物类:eat(),铲屎官类: feed()、play(Pet pet)
- Dog类继承宠物类,重写eat(),并添加catchingFlyDisc()方法,实现接飞盘功能
- Penguin类添加swimming()方法,实现游泳功能
实现代码:
package com.sbx.pets; /** * Created by BlueLover * Name:苏半夏 * Date:2021/2/2 * Time:14:49 */ public class Pet { protected int healthValue = 100;//定义宠物健康值 protected int intimacy = 0;//定义宠物与主人的亲密度 public void eat(){ System.out.println("宠物在吃东西"); } }
package com.sbx.pets; /** * Created by BlueLover * Name:苏半夏 * Date:2021/2/2 * Time:14:51 */ public class Dog extends Pet{ @Override public void eat() { System.out.println("狗狗正在吃狗粮"); //如果健康值大于100则设置为100,否则 healthValue += 3; if (healthValue>100){ healthValue = 100; } System.out.println("健康值增加3,目前健康值是"+healthValue); } //接飞盘游戏 public void catchingFlyDisc(){ System.out.print("狗狗正在玩接飞盘!"); healthValue -= 10; intimacy +=5; System.out.println("狗狗健康值减少10,与主人亲密度增加5,目前健康值是"+healthValue+",亲密度是:"+intimacy); } }
package com.sbx.pets; /** * Created by BlueLover * Name:苏半夏 * Date:2021/2/2 * Time:14:50 */ public class Penguin extends Pet{ @Override public void eat() { System.out.println("企鹅正在吃鱼"); //如果健康值大于100则设置为100,否则 healthValue += 5; if (healthValue>100){ healthValue = 100; } System.out.println("健康值增加5,目前健康值是"+healthValue); } //接飞盘游戏 public void swimming(){ System.out.print("企鹅正在玩游泳游戏!"); healthValue -= 10; intimacy +=5; System.out.println("企鹅健康值减少10,与主人亲密度增加5,目前健康值是"+healthValue+",亲密度是:"+intimacy); } }
package com.sbx.pets; /** * Created by BlueLover * Name:苏半夏 * Date:2021/2/2 * Time:15:02 */ public class Person { //给宠物喂食 public void feed(Pet pet){ pet.eat(); } public void play(Pet pet){ if (pet instanceof Dog){ ((Dog) pet).catchingFlyDisc(); }else if (pet instanceof Penguin){ ((Penguin) pet).swimming(); } } }
那天我还是偷偷的去见了你,回来后,果不其然的若有所失

浙公网安备 33010602011771号