Java 0603 第九次课作业

本文介绍了一种使用封装、继承和多态等面向对象编程原则设计游戏角色的方法。通过创建父类Role以及两个子类Magicer和Soldier,分别表示法师和战士,实现了角色的攻击伤害计算。此外,还设计了一个Team类来表示团队,可以添加成员并计算团队的总伤害值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5, (封装、继承、多态)创建三个类,组成一个继承树,表示游戏中的角色。

描述如下:

父类: Role。是所有职业的父类。 属性: name,表示角色的名字。

方法: public int attack() ,该方法返回值为角色的攻击对敌人的伤害。

Role 有两个子类:

 1) 法师Magicer 属性:魔法等级(范围为1 ~ 10) 方法: public int attack() ,该方法返回法师的攻击对敌人造成的伤害值。 法师攻击伤害值为:魔法等级*魔法基本伤害值(固定为5)

 2) 战士Soldier 属性:攻击伤害值 方法: public int attack() ,该方法返回战士的攻击对敌人造成的伤害值。 战士的攻击伤害值为:其攻击伤害属性值 注意:上述的三个类所有属性都应当作为私有,并提供相应的get/set 方法。

再设计一个Team 类,表示一个组队。具有如下方法

1)   addMember,表示组队增加一个成员。注意:组队成员最多为6 人

提示:应当利用一个数组属性,保存所有成员

2)   attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害值 省略 get/set 方法后的类图如下:

225253_C0BB_3858331.png

Role类

package org.jsoft.work;

public abstract class Role {				//父类职业
	static int sum = 0;						//团队人数
	private String name;					//职业姓名
	public String getName() {				
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public abstract int attack();			//攻击伤害
}

Magicer类

package org.jsoft.work;

public class Magicer extends Role{					//法师继承父类
	private int grade;								//法师等级
	public int getGrade() {
		return grade;
	}
	public void setGrade(int grade) {
		this.grade = grade;
	}
	Magicer(String name,int grade){					//初始化,团队人数增加
		setName(name);
		this.grade = grade;
		sum++;
	}
	@Override
	public int attack() {							//重写父类方法,返回伤害值
		// TODO Auto-generated method stub
		return grade*5;
	}
}

Soldier类

package org.jsoft.work;

public class Soldier extends Role{					//战士继承父类
	private int hurt;								//战士伤害
	public int getHurt() {
		return hurt;
	}
	public void setHurt(int hurt) {
		this.hurt = hurt;
	}
	Soldier(String name,int hurt){					//初始化,团队人数增加
		setName(name);
		this.hurt = hurt;
		sum++;
	}
	@Override
	public int attack() {							//重写父类方法,返回伤害值
		// TODO Auto-generated method stub
		return hurt;
	}
}

Team类

package org.jsoft.work;

public class Team {							//Team 类
	Role [] role = new Role[6];				//Role类型数组,人数最多为6
	public int addMember(Role r){			//团队成员传入数组,返回团队人数
		role[Role.sum-1] = r;
		return Role.sum;
	}
	public int attackSum(){					//计算团队伤害值
		int sumAttack = 0;
		for(int i=0;i<Role.sum;i++){
			sumAttack = sumAttack + role[i].attack();
		}
		return sumAttack;
	}
}

Test类

package org.jsoft.work;

public class Test {									//测试类
	public static void main(String[] args) {
		Team t0 = new Team();						//新建团队
		Magicer m0 = new Magicer("法师A",10);		//新建法师
		System.out.println("团队成员:"+t0.addMember(m0)+"人 "+m0.getName());//输出团队成员
		System.out.println("团队伤害:"+t0.attackSum());//输出团队伤害
		Soldier s0 = new Soldier("战士B",10);
		System.out.println("团队成员:"+t0.addMember(s0)+"人 "+m0.getName()+" "+s0.getName());
		System.out.println("团队伤害:"+t0.attackSum());
	}
}

225601_kstr_3858331.png

转载于:https://my.oschina.net/u/3858331/blog/1825569

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值