package org.jsoft.java_1112;
public abstract class Role {
public String name;// 定义父类属性名
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract int attack();// 父类抽象
}
package org.jsoft.java_1112;
public class Magicer extends Role {
private int level;// 定义子类属性
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public Magicer(int level) {// 有参构造法师攻击值方法
this.level = level;
}
public int attack() {// 子类重写父类方法
return level * 5;
}
}
package org.jsoft.java_1112;
public class Soldier extends Role {
private int hurt;// 定义子类属性
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
public Soldier(int hurt) {//构造战士攻击值方法
this.hurt = hurt;
}
public int attack() {// 子类重写父类方法
return hurt;
}
}
package org.jsoft.java_1114;
public class Team {
Role [] member=new Role [6];
int x=0;//计数用的
public void addMember(Role role){
if(x<6){//计数到6就不再循环添加成员了
for(int y=0;y<=member.length;y++){
if(member[y]==null){//每一次新添加的成员
member[y]=role;//把成员添加到数组里
x++;
break;
}
}
}
else{
System.out.println("本组成员已满");
}
}
public int attackSum(){
int sum=0;
for(int a=0;a<x;a++){
sum=sum+member[a].attack();
}
return sum;
}
}
package org.jsoft.java_1112;
public class Test {
public static void main(String[] args) {
Role r = new Magicer(10);// 父类引用指向子类对象
r.setName("法师1");
Role r1 = new Soldier(11);// 父类引用指向子类对象
r1.setName("战士2");
Role r2 = new Magicer(12);// 父类引用指向子类对象
r2.setName("法师3");
Role r3 = new Soldier(13);// 父类引用指向子类对象
r3.setName("战士4");
Role r4 = new Magicer(14);// 父类引用指向子类对象
r4.setName("法师5");
Role r5 = new Soldier(15);// 父类引用指向子类对象
r5.setName("战士6");
System.out.println(r.getName() + "输出了" + r.attack() + "攻击值");
System.out.println(r1.getName() + "输出了" + r1.attack() + "攻击值");
System.out.println(r2.getName() + "输出了" + r2.attack() + "攻击值");
System.out.println(r3.getName() + "输出了" + r3.attack() + "攻击值");
System.out.println(r4.getName() + "输出了" + r4.attack() + "攻击值");
System.out.println(r5.getName() + "输出了" + r5.attack() + "攻击值");
Team t = new Team();//先有角色才有角色的攻击值
t.addMember(r);
t.addMember(r1);
t.addMember(r2);
t.addMember(r3);
t.addMember(r4);
t.addMember(r5);
System.out.println("这个团队输出了" + t.attackSum() + "攻击值");
}
}