5, (封装、继承、多态)创建三个类,组成一个继承树,表示游戏中的角色。
描述如下:
父类: 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,表示组队所有成员进行攻击时,对敌人造成的总伤害值
根据类图和描述,创建相应的类。并编写相应的测试代码。
Role.java
package org.zy.homework;
public abstract class Role {
public Role(String name) {
this.name=name;
}
private String name="player";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract int attack();
}
Magicer.java
package org.zy.homework;
public class Magicer extends Role {
private int level;
public Magicer(String name) {
super(name);
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
@Override
public int attack() {
// TODO Auto-generated method stub
return getLevel()*5;
}
}
Soldier.java
package org.zy.homework;
public class Soldier extends Role{
public Soldier(String name) {
super(name);
}
private int hurt;
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
@Override
public int attack() {
// TODO Auto-generated method stub
return getHurt();
}
}
Team.java
package org.zy.homework;
public class Team {
int i=0;
Role[] person=new Role[6];
public void addMember(Role role) {
for(i=0;i<6;i++) {
person[i]=role;
}
}
public int attackSum() {
int sum=0;
for(i=0;i<6;i++) {
sum=sum+person[i].attack();
}
return sum;
}
}
Text.java
package org.zy.homework;
public class Text {
public static void main(String[] args) {
Team t=new Team();
Role m=new Magicer("m1");
Role s=new Soldier("s1");
Magicer m1=(Magicer)m;
Soldier s1=(Soldier)s;
m1.setLevel(5);
s1.setHurt(6);
for(int i=0;i<2;i++) {
t.addMember(m1);
}
for(int i=0;i<4;i++) {
t.addMember(s1);
}
System.out.println("总伤害值为"+t.attackSum());
}
}
;