多态的调用
定义父类Role,定义属性name,两个子类Soldier和Magicer
定义父类武器Weapon,定义属性name,方法attack()攻击
三个子类Sword,Knife,Mace(狼牙棒),
其中Sword的attack伤害值为100
Knife的attack伤害值为200
Mace的attack伤害值为300
其中战士Solder和法师Magicer可以使用任意一种武器
从控制台输入指令
1>输入A,创建soldier
2>输入B,创建magicer
3>输入1,创建Sword
4>输入2,创建Knife
5>输入3,创建Mace
当战士和法师满5个时,而且每个角色配备自己选择的武器,
组队去攻击,求攻击总值
先定义战士和法士的父类
/*** 定义战士和法师公同父类 **/
public class Role {
/*** 名字 **/
String name;
public Role(String name) {
this.name = name;
}
}
定义战士子类继承父类Role
public class Soldier extends Role {
/***战士攻击的方法。返回本次的伤害值*/
public Soldier() {
super("战士");
}
}
定义魔法师子类,继承父类Role
public class Magicer extends Role {
public Magicer() {
super("法师");
}
}
定义武器父类
public class Weapon {
String name;
public Weapon(String name) {
this.name = name;
}
public int attack() {//武器攻击力
return 0;
}
}
分别定义武器的三个子类,并继承父类的属性`
/**剑**/
public class Sword extends Weapon {
public Sword() {//返回其武器的名字
super("剑");
}
public int attack() {//武器自身的属性伤害值
return 100;
}
}
/**刀**/
public class Knife extends Weapon {
public Knife() {//返回其武器的名字
super("刀");
}
public int attack() {//武器自身的属性伤害值
return 200;
}
}
public class Mace extends Weapon {
public Knife() {//返回其武器的名字
super("狼牙棒");
}
public int attack() {//武器自身的属性伤害值
return 300;
}
}
main函数调用
import java.util.Arrays;
import java.util.Scanner;
public class TestGame {
public static void main(String[] args ) {
// 创建数组存储战士
Soldier[] s = new Soldier[5];
Magicer[] m = new Magicer[5];
int sum=0;
int sum1=0;
int sum2=0;
for (int i = 0; i < 5; i++) {
System.out.println("请输入命令:A》战士B》法师");
char type = new Scanner(System.in).next().charAt(0);
switch (type) {
case 'A':
// 创建战士对象
Soldier soldier = new Soldier();
s[i] = soldier;
System.out.println("选择武器:1剑,2刀,3狼牙棒");
int key=new Scanner(System.in).nextInt();
switch (key) {
case 1:
Weapon sword = new Sword();
sum1 += sword.attack();
break;
case 2:
Weapon knife = new Knife();
sum1 += knife.attack();
break;
case 3:
Weapon mace = new Mace();
sum1 += mace.attack();
break;
default:
break;
}
break;
case 'B':
Magicer magicer = new Magicer();
m[i] = magicer;
System.out.println("选择武器:1剑,2刀,3狼牙棒");
int key1=new Scanner(System.in).nextInt();
switch (key1) {
case 1:
Weapon sword = new Sword();
sum2 += sword.attack();
break;
case 2:
Weapon knife = new Knife();
sum2 += knife.attack();
break;
case 3:
Weapon mace = new Mace();
sum2 += mace.attack();
break;
default:
break;
}
break;
default:
System.out.println("重输入");
i--;
}
System.out.println("选取之后的战士"+Arrays.toString(s));
System.out.println("选取之后的战士"+Arrays.toString(m));
}
sum=sum1+sum2;
System.out.print(sum);
}
}