Java多态练习题

需求:

  宠物饿了,需要铲屎官给宠物喂食。

  1. 不同宠物吃的东西不一样。
  2. 不同宠物恢复后体力值不一样。
  3. 铲屎官和狗狗玩接飞盘游戏,狗狗健康值减少10,与铲屎官亲密度增加5

  4. 铲屎官和 企鹅玩游泳游戏,企鹅健康值减少10,与铲屎官亲密度增加5

分析:

 

  1. 宠物类:eat(),铲屎官类: feed()、play(Pet pet)
  2. Dog类继承宠物类,重写eat(),并添加catchingFlyDisc()方法,实现接飞盘功能
  3. 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();
        }
    }

}

 

posted @ 2021-02-02 16:03  山石满棠  阅读(513)  评论(0)    收藏  举报