Role class:
package character;public class Role { /**
 * The name of the Character
 */
String name; public Role(String name){
this.name = name;
} /**
 * The total damage that Character due to Opponent
 */
public int attack(){
return 0;
} /**
 * @return the name
 */
public String getName() {
return name;
} /**
 * @param name the name to set
 */
public void setName(String name) {
this.name = name;
}}Soldier class:
package character;public class Soldier extends Role { private int attack; public Soldier(String name){
super(name);
} /**
 * The total damage that Character due to Opponent
 */
public int attack(){
return 0;
} /**
 * @return the attack
 */
public int getAttack() {
return attack;
} /**
 * @param attack the attack to set
 */
public void setAttack(int attack) {
this.attack = attack;
}}
Magicer class( 樓主你確定你的法師沒拼錯??)
package character;public class Magicer extends Role { /**
 * The level of magicer
 */
private int level; public Magicer(String name){
super(name);
} /**
 * @return the level
 */
public int getLevel() {
return level;
} /**
 * @param level the level to set
 */
public void setLevel(int level) {
this.level = level;
} /**
 * The total damage that Character due to Opponent
 */
public int attack(){
return 5 * level;
}}
Team class:
package character;import java.util.ArrayList;
import java.util.List;public class Team {
private List<Role> members = new ArrayList<>(6);

public Team(){ } public int attackSum(){
int total = 0;
for (Role member: members){
total += member.attack();
}
return total;
} /**
 * 
 * @param role
 */
public void addMember(Role role){
if (members.size() < 6){
members.add(role);
}
else{
System.out.println("The team already full");
}
}

public List<Role> teamList(){
return members;
}
}
UML Diagram: