5, (封装、继承、多态)创建三个类,组成一个继承树,表示游戏中的角色。
描述如下:
父类: Role。是所有职业的父类。 属性: name,表示角色的名字。
方法: public int attack() ,该方法返回值为角色的攻击对敌人的伤害。
Role 有两个子类:
1) 法师Magicer 属性:魔法等级(范围为1 ~ 10) 方法: public int attack() ,该方法返回法师的攻击对敌人造成的伤害值。 法师攻击伤害值为:魔法等级*魔法基本伤害值(固定为5)
2) 战士Soldier 属性:攻击伤害值 方法: public int attack() ,该方法返回战士的攻击对敌人造成的伤害值。 战士的攻击伤害值为:其攻击伤害属性值 注意:上述的三个类所有属性都应当作为私有,并提供相应的get/set 方法。
再设计一个Team 类,表示一个组队。具有如下方法
-
addMember,表示组队增加一个成员。注意:组队成员最多为6 人
提示:应当利用一个数组属性,保存所有成员
-
attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害值 省略 get/set 方法后的类图如下:
根据类图和描述,创建相应的类。并编写相应的测试代码。
package org.jsoft.homework;
public abstract class Role {
private String name;
public static int num; //成员数量
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract int attack() ;//角色攻击对敌人伤害值
}
package org.jsoft.homework;
public class Magicer extends Role{
private int level;
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
Magicer(String name,int level) { //用于初始化
setName(name);
this.level=level;
System.out.println("法师成员:"+getName()+", 等级:"+this.level);
num++;
}
public int attack(){
return getLevel()*5;
}
}
package org.jsoft.homework;
public class Soldier extends Role{
private int hurt;
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
Soldier(String name,int hurt) { //初始化
setName(name);
this.hurt=hurt;
System.out.println("战士成员:"+getName()+", 伤害值:"+this.hurt);
num++;
}
public int attack(){
return hurt;
}
}
package org.jsoft.homework;
public class Team {
Role [] role=new Role[6];//创建数组保存所有成员
public int addMember(Role r) {//增加成员
role[Role.num-1] = r;
return Role.num;
}
public void attackSum() {//总伤害值
int attackNum = 0;
for(int i=0;i<Role.num;i++){
attackNum = attackNum + role[i].attack();
}
System.out.println("团队总伤害值为:"+attackNum);
}
}
package org.jsoft.homework;
public class Test {
public static void main(String[] args) {
Team t=new Team();
t.addMember(new Magicer("m1", 1));
t.addMember(new Soldier("s1", 10));
t.addMember(new Magicer("m2", 2));
t.addMember(new Soldier("s2", 20));
t.attackSum();
}
}
结果