CoreJava附加题

这组习题涵盖Java编程中的封装、继承、多态概念,涉及创建游戏角色的继承树,对已有角色程序的修改,使用Object类,字符串操作如随机生成字符串、检查子串存在及位置,以及处理Student对象,包括属性name、age、score和classNum。
摘要由CSDN通过智能技术生成

习题
8.(封装、继承、多态)创建三个类,组成一个继承树,表示游戏中的角色。
描述如下:

 I.父类:Role(角色)。是所以职业的父类。
 	1).属性:name,表示角色的名字。
 	2).方法:public int attack(),该方法返回值为角色的攻击对敌人的伤害。
 II.Role的第一个子类:Magicer(法师)
 	1).属性:魔法等级(范围为1~10)。
 	2).方法:public int attack(),该方法返回法师的攻击对敌人造成的伤害值。
 III.Role的第二个子类:Soldier(战士)
 	1).属性:攻击伤害值
 	2).方法:public int attack(),该方法返回战士的攻击对敌人造成的伤害值。战士的攻击伤害值为:其攻击伤害属性值。
 	注意:上述的三个类所有属性都应当作为私有,并提供相应的get/set方法。
 IV.再设计一个Team类,表示一个组队。具有如下方法:
 	1).addMenber,表示组队增加一个成员。
 	注意:组队成员最多为6人。
 	提示:应当利用一个数组属性,保存所有成员。
 	2).attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害值省略get/set方法后的类图如下:

Alt

10.在之前的游戏角色Role程序上进行修改。

I.创建Role接口,包含两个方法:
	1).int attack();表示攻击,返回值表示对敌人的伤害
	2).void practise();表示练习。练习之后对敌人的伤害会增加。
II.创建NamedRole类,该类为一个抽象类,实现了Role接口,并有两个属性:
	1).name:角色的名字
	2).age:角色的年龄
III.增加MagicStick接口。该接口表示法师使用的法杖。接口中包含一个方法:
	1).int fire();
IV.为MagicStick类增加两个实现类,分别为GreenStick和BlackStick。其中,对于这两个类的fire方法:
	1).GreenStick平时返回1,夏天(6~8月)使用时返回2
	2).BlackStick奇数月返回1,偶数月返回2
V.修改Magicer类
	1)为法师类增加MagicStick类的属性stick,表示法师使用的法权。
	2) 让其继承自NamedRole类,并实现attack和practise功能。
	a)int attack()返回值为法师的魔法等级(level)*每一级的固定伤害(5)
	b)void practise()方法:
		i.当法师的stick属性为null时,调用practise则level++
		ii.当法师的stick不为null时,调用practise方法时,法师的等级level满足:level=level+1+stick.fire();
		即:法师的等级增加为1+stick属性的fire方法的返回值。
VI.增加Weapon接口,表示战士使用的武器。Weapon接口中定义了两个方法:
	1).void setSoldier(Soldier s);该方法表示设置武器的使用者
	2).int fire();该方法的返回值表示战士使用该武器时,对敌人的伤害值
VII.为Weapon增加两个实现了,Bolo,表示大刀,Pike,表示长矛。对这两个实现类的描述如下:
	1).Bolo:
		a).当soldier的年龄大于等于18岁时,fire方法返回100
		b).当soldier年龄小于18岁,fire方法返回50
	2).Pike:Pike类有一个属性:name,表示长矛的名字。
		a).当长矛的名字和战士的名字一致时,fire方法返回1000
		b).当长矛的名字和战士的名字不一致时,fire方法返回25
VIII.修改Soldier类
	1).为Soldier类增加一个Weapon属性,表示战士的武器
	2).让其继承自NamedRole类,并实现attack和practise功能。其中
		a).Soldier的attack()返回值为战士的hurt值与武器的fire()返回值的和,即:总攻击输出=战士的徒手伤害值+武器的伤害值
		b).practise()方法:每调用一次则战士的hurt值+10
IX.编写相应的测试代码。

在这里插入图片描述11.(Object类)有下面代码

interface IA{
   
	void ma();
}
class MyClass implements IA{
   
	public void ma() {
   }
	public String toString() {
   
		return "MyClass toString()";
	}
}
public class TestMyClass {
   
	public static void main(String[] args) {
   
		IA ia = new MyClass();
		System.out.println(ia);
	}
}
选择正确答案:C
A.编译不通过,因为IA接口中没有定义toString方法
B.编译通过,输出:“IA@地址”
C.编译通过,输出:"MyClass toString()"

12.(StringBuilder)给定一个长度,随机产生一个该长度的字符串,由大写、小写字母以及数字组成Java中随机数的生成:

java.util.Random r = new java.util.Random();
int a = r.nextInt(100):0~99的随机数
提示:生成int值,并将int值转换成ASCII编码对应一个字符。
import java.util.Random;
import java.util.Scanner;

public class RandomString {
   
	public static final String allchar = "0123456789abcd"+"efghklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	public static void main(String[] args) {
   
		Scanner sc = new Scanner(System.in);
		System.out.println
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值