继承(小案例)

1.某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精

设定

  1. 蛇怪类:

属性包括:怪物名字,生命值,攻击力

方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)

  1. 蜈蚣精类:

属性包括:怪物名字,生命值,攻击力

方法包括:攻击,移动(飞行移动)

要求

  1. 分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
  2. 利用继承机制,实现蛇怪类和蜈蚣精类
  3. 攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
  4. 编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
  5. 定义名为mon的包存怪物类,蛇怪类,蜈蚣精类和测试类

2.源码 

2.1妖怪类

public class Monster {
    private String name;;//怪物名
    private int hp;//血量
    private int aggressivity;//攻击力

    public Monster(String name, int hp, int aggressivity) {
        this.name = name;
        this.hp = hp;
        this.aggressivity = aggressivity;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getHp() {
        return hp;
    }
    public void setHp(int hp) {
        this.hp = hp;
    }
    public int getAggressivity() {
        return aggressivity;
    }
    public void setAggressivity(int aggressivity) {
        this.aggressivity = aggressivity;
    }
	/** 攻击 */
    public void attack() {
        System.out.println("怪物"+this.getName()+"展开攻击");
        System.out.println("当前生命值:"+this.getHp());
        System.out.println("攻击力是:"+this.getAggressivity());
    }
    /** 移动 */
    public void move() {
    }
}

2.2蛇类

public class Snake extends Monster {

    public Snake(String name, int hp, int aggressivity) {
        super(name, hp, aggressivity);
    }

       /** 加血 */
    public void addHp(){
        this.setHp(this.getHp()+20);
        System.out.println("实施大蛇补血术......,当前的生命值是"+this.getHp());
    }

    /** 重写父类的移动方法*/
    @Override
    public void move() {
        System.out.println("我是蛇,我走S线路");
    }
}

2.3蜈蚣类

public class Centipede extends Monster {


    public Centipede(String name, int hp, int aggressivity) {
        super(name, hp, aggressivity);
    }

    /** 重写父类的移动方法*/
    @Override
    public void move() {

            System.out.println("我是蜈蚣精,我御风飞行");
        }

}

2.4测试类

public class Test {
    public static void main(String[] args) {
        Snake sn = new Snake("怪蛇甲",5,20);//生产一个蛇精
        sn.attack();
        if(sn.getHp()<10){
            sn.addHp();
        }
        sn.move();
        System.out.println("======================");

        Centipede ct = new Centipede("蜈蚣精乙",60,15);//new一个蜈蚣
        ct.attack();
        ct.move();
    }
}

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值