java继承与多态练习题

描述如下:
父类:Role。是所有职业的父类。
属性:name,表示角色的名字。
方法:public int attack(),该方法返回值为角色的攻击对敌人的伤害。
Role 有两个子类:
1) 法师Magicer
属性:魔法等级(范围为1 ~ 10)
方法:
public int attack(),该方法返回法师的攻击对敌人造成的伤害值。
法师攻击伤害值为:魔法等级*魔法基本伤害值(固定为5)
2) 战士Soldier
属性:攻击伤害值
方法:
public int attack(),该方法返回战士的攻击对敌人造成的伤害值。
战士的攻击伤害值为:其攻击伤害属性值
注意:上述的三个类所有属性都应当作为私有,并提供相应的get/set 方法。
再设计一个Team 类,表示一个组队。具有如下方法
1) addMember,表示组队增加一个成员。注意:组队成员最多为6 人
提示:应当利用一个数组属性,保存所有成员
2) attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害值
省略 get/set 方法后的类图如下:

package 附加题.Game;

public abstract class Role {
    private String name;
    public abstract int attack();
    //获得名字
    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "name='" + name + '\''+",";
    }
    //设置名字
    public void setName(String name) {
        this.name = name;
    }
}

package 附加题.Game;

public class Magicer extends Role{
    private int level;

    public int getLevel() {
        return level;
    }

    @Override
    public String toString() {
        return "Magicer{" +super.toString()+
                "level=" + level +
                '}';
    }
    //设置魔法等级
    public void setLevel(int level) {
        if (level<=10&&level>=1){
        this.level = level;
        }else return;
    }
    //魔法师伤害数值
    @Override
    public int attack() {
        return level*5;
    }
}



package 附加题.Game;

public class Soldier extends Role{
    private int hurt;

    public void setHurt(int hurt) {
        this.hurt = hurt;
    }
    //战士伤害
    @Override
    public int attack() {
        return hurt;
    }

    @Override
    public String toString() {
        return "Soldier{" +super.toString()+
                "hurt=" + hurt +
                '}';
    }
}


package 附加题.Game;

public class Team {
    private Role[] roles=new Role[6];
    private int i=0;
    //添加成员模块
    public void addMember(Role role){
        if (this.i<=6){
        roles[i]=role;
        this.i++;
        }else return;
    }
    //总伤害模块
    public int attackSum(){
        int sum=0;
        for (Role role:roles) {
            if (role instanceof Magicer){
                Magicer magicer=(Magicer)role;
                sum+=magicer.attack();
            }else if (role instanceof Soldier){
                Soldier soldier=(Soldier)role;
                sum+=soldier.attack();
            }else continue;
        }
        return sum;
    }
    //统计成员模块
    public void members(){
        int i=0;
        Role[] roles=new Role[6];
        for (Role role:this.roles) {
            if (role instanceof Magicer){
                Magicer magicer=(Magicer)role;
                roles[i]=magicer;
                i++;
            }else if (role instanceof Soldier){
                Soldier soldier=(Soldier)role;
                roles[i]=soldier;
                i++;
            }else break;
        }
        for (Role role:roles) {
            if (role!=null) {
                System.out.println(role);
            }else break;
        }
    }

}


package 附加题.Game;

public class Player {
    public static void main(String[] args) {
        //创建魔法师、战士、队伍的对象
        Magicer magicer = new Magicer();
        Soldier soldier = new Soldier();
        Team team = new Team();
        //设置魔法师的名字和
        magicer.setName("甘道夫");
        magicer.setLevel(5);
        soldier.setName("战士");
        soldier.setHurt(90);
        //把成员加入队伍
        team.addMember(magicer);
        team.addMember(soldier);
        //列出小组成员
        System.out.println("该小队成员为:");
        team.members();
        //列出小组的伤害
        System.out.print("该小队伤害为:");
        System.out.print(team.attackSum());
    }
}

在这里插入图片描述

  • 0
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

两年半的JAVA练习生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值