面向对象高级:游戏团队角色扮演 Role角色类是所有职业的父类,包含受保护的属性:roleName(角色名字),public int getAttack()(返回角色的攻击力,不能确定)。 Master法师类继承了Role类,包含属性:name(姓名),grade(魔法等级1~ 10),public int getAttack()(法师攻击力=魔法等级*5)。 Soldier战士类继承了Role类,包含属性:name(姓名),attack(攻击力);public int attack()方法(返回战士的攻击力),Soldier类的所有属性都应当作为私有,并提供相应的getter/setter方法。 Team 团队类,一个团队包括一个法师、若干个战士(最多6个,用Soldier[]实现)、战士实际个数(num)。定义了两个方法:public boolean addMember(Solider s)方法(当战士实际个数不超过6时,将s赋值给第num个数组元素), public int attackSum()方法(返回该团队的总攻击力)。 根据以上描述,创建相应的类。并编写相应的测试代码。
时间: 2024-04-28 12:19:41 浏览: 128
根据题目描述,我们可以先创建Role类,代码如下:
```java
// Role.java
public class Role {
protected String roleName;
public Role(String roleName) {
this.roleName = roleName;
}
public String getRoleName() {
return roleName;
}
public int getAttack() {
return 0; // 这里返回0,因为不确定攻击力
}
}
```
接着,创建Master类和Soldier类,代码如下:
```java
// Master.java
public class Master extends Role {
private String name;
private int grade;
public Master(String roleName, String name, int grade) {
super(roleName);
this.name = name;
this.grade = grade;
}
@Override
public int getAttack() {
return grade * 5; // 根据魔法等级计算法师的攻击力
}
}
// Soldier.java
public class Soldier extends Role {
private String name;
private int attack;
public Soldier(String roleName, String name, int attack) {
super(roleName);
this.name = name;
this.attack = attack;
}
public int getAttack() {
return attack; // 直接返回战士的攻击力
}
public void setAttack(int attack) {
this.attack = attack;
}
}
```
最后,创建Team类,代码如下:
```java
// Team.java
public class Team {
private Master master;
private Soldier[] soldiers;
private int num;
public Team(Master master) {
this.master = master;
this.soldiers = new Soldier[6];
this.num = 0;
}
public boolean addMember(Soldier s) {
if (num < 6) {
soldiers[num] = s;
num++;
return true;
} else {
return false;
}
}
public int attackSum() {
int sum = 0;
sum += master.getAttack(); // 累加法师的攻击力
for (int i = 0; i < num; i++) {
sum += soldiers[i].getAttack(); // 累加战士的攻击力
}
return sum;
}
}
```
最后,我们可以编写测试代码,测试所有类的功能是否正常:
```java
public class Main {
public static void main(String[] args) {
// 创建一个法师
Master master = new Master("法师", "张三", 10);
System.out.println("法师攻击力:" + master.getAttack());
// 创建若干个战士
Soldier s1 = new Soldier("战士", "李四", 20);
Soldier s2 = new Soldier("战士", "王五", 30);
Soldier s3 = new Soldier("战士", "赵六", 40);
// 创建一个团队,并添加若干个战士
Team team = new Team(master);
team.addMember(s1);
team.addMember(s2);
team.addMember(s3);
// 输出团队的总攻击力
System.out.println("团队总攻击力:" + team.attackSum());
}
}
```
输出结果如下:
```
法师攻击力:50
团队总攻击力:140
```
以上就是根据题目描述创建相应类,并编写测试代码的过程。
阅读全文