JAVA面试(笔试题)

多态的调用

定义父类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);
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子言君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值