代码如下:
Role类:
package org.jsoft.lianxi;
public abstract class Role {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract int attack();//抽象一个方法,在父类中重写进行返回值
public abstract String attack1();
}
Magicer类:
package org.jsoft.lianxi;
public class Magicer extends Role{
private int level;
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int attack(){
return this.level*5;
}
public Magicer(int level ){
this.level=level;
}
public String attack1(){
return getName()+"攻击伤害"+getLevel();
}
}
Soldier类:
package org.jsoft.lianxi;
public class Soldier extends Role{
private int hurt;
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
public int attack(){
return this.hurt;
}
public Soldier(int hurt){
this.hurt=hurt;
}
public String attack1(){
return getName()+"攻击伤害"+getHurt();
}
}
Team类:
package org.jsoft.lianxi;
public class Team {//一个组队
Role [] member= new Role[6];//定义一个引用型数组,因为是角色,所以用Role
int i= 0;
public void addMember(Role role){
member[i++] = role; //赋值
}
public int attackSum(){
int atsum = 0;//初始化总攻击值
for(int j=0; j<i; j++){
atsum =atsum+member[j].attack();//对组队成员的攻击值进行求和
}
return atsum;
}
}
Test类:
package org.jsoft.lianxi;
public class Test {
public static void main(String[] args) {
Role r=new Magicer(5);
r.setName("法师");
System.out.println(r.attack1());
Role r1=new Soldier(6);
r1.setName("战士");
System.out.println(r1.attack1());
Team t=new Team();
t.addMember(r);
t.addMember(r1);
System.out.println("组队攻击伤害为:"+t.attackSum());
}
}
运行结果: