用java编写一个英雄类Hero(非抽象),包含属性如下 英雄名称name 等级level 经验值experience 血量值blood 要求实现接口Fightable,接口包含如下方法 攻击attack 结束战斗fightOver(判断胜负) 当英雄获胜后经验值会增加,而受伤后血液值会减少x,并且当战斗者的血液值低于MIN时会输出危险提示 编写测试类:创建两个英雄对象,并模拟相互攻击
时间: 2023-03-30 21:04:24 浏览: 559
好的,这是一个关于Java编程的问题,我可以回答。英雄类Hero包含属性:英雄名称name、等级level、经验值experience、血量值blood。同时,实现接口Fightable,接口包含攻击方法attack和结束战斗方法fightOver。当英雄获胜后经验值会增加,而受伤后血液值会减少x,并且当战斗者的血液值低于MIN时会输出危险提示。测试类可以创建两个英雄对象,并模拟相互攻击。
相关问题
在java中编写一个英雄类Hero(非抽象),包含属性如下 英雄名称name 等级level 经验值experience 血量值blood 要求实现接口Fightable,接口包含如下方法 攻击attack 结束战斗fightOver(判断胜负) 当英雄获胜后经验值会增加,而受伤后血液值会减少x,并且当战斗者的血液值低于MIN时会输出危险提示 编写测试类:创建两个英雄对象,并模拟相互攻击
好的,这是一个关于Java编程的问题。英雄类Hero包含属性:英雄名称name、等级level、经验值experience、血量值blood。同时,要求实现接口Fightable,接口包含攻击方法attack和结束战斗方法fightOver。当英雄获胜后,经验值会增加,而受伤后血液值会减少x,并且当战斗者的血液值低于MIN时会输出危险提示。现在,请您编写测试类,创建两个英雄对象,并模拟相互攻击。
在Java中用接口实现:LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女。所有这些英雄,都有一些共同的状态,比如,他们都有名字,hp,护甲,移动速度等等。这样我们就可以设计一种东西,叫做类,代表英雄这样一种事物。请创建一个类: 英雄(Hero)。对应的状态: 名字(name), 血量(hp),护甲(armor),移动速度(moveSpeed)。为Hero增加一个抽象方法 attack,并且把Hero声明为abstract的。APHero(物理攻击),AMHero(魔法攻击),AMAPHero(物理和魔法攻击)是Hero的子类,继承了Hero的属性和方法。但是各自的攻击手段是不一样的,所以继承Hero类后,这些子类就必须提供不一样的attack方法实现。请实现三个子类的抽象方法,并进行运行。
下面是Java代码实现:
```java
// 英雄接口
public interface Hero {
String getName();
int getHp();
int getArmor();
int getMoveSpeed();
void attack();
}
// 物理攻击英雄类
public class APHero implements Hero {
private String name;
private int hp;
private int armor;
private int moveSpeed;
public APHero(String name, int hp, int armor, int moveSpeed) {
this.name = name;
this.hp = hp;
this.armor = armor;
this.moveSpeed = moveSpeed;
}
@Override
public String getName() {
return name;
}
@Override
public int getHp() {
return hp;
}
@Override
public int getArmor() {
return armor;
}
@Override
public int getMoveSpeed() {
return moveSpeed;
}
@Override
public void attack() {
System.out.println(name + " 发动了物理攻击!");
}
}
// 魔法攻击英雄类
public class AMHero implements Hero {
private String name;
private int hp;
private int armor;
private int moveSpeed;
public AMHero(String name, int hp, int armor, int moveSpeed) {
this.name = name;
this.hp = hp;
this.armor = armor;
this.moveSpeed = moveSpeed;
}
@Override
public String getName() {
return name;
}
@Override
public int getHp() {
return hp;
}
@Override
public int getArmor() {
return armor;
}
@Override
public int getMoveSpeed() {
return moveSpeed;
}
@Override
public void attack() {
System.out.println(name + " 发动了魔法攻击!");
}
}
// 物理和魔法攻击英雄类
public class AMAPHero implements Hero {
private String name;
private int hp;
private int armor;
private int moveSpeed;
public AMAPHero(String name, int hp, int armor, int moveSpeed) {
this.name = name;
this.hp = hp;
this.armor = armor;
this.moveSpeed = moveSpeed;
}
@Override
public String getName() {
return name;
}
@Override
public int getHp() {
return hp;
}
@Override
public int getArmor() {
return armor;
}
@Override
public int getMoveSpeed() {
return moveSpeed;
}
@Override
public void attack() {
System.out.println(name + " 发动了物理和魔法攻击!");
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Hero hero1 = new APHero("盲僧", 100, 50, 300);
Hero hero2 = new AMHero("提莫", 80, 20, 350);
Hero hero3 = new AMAPHero("盖伦", 120, 80, 280);
hero1.attack();
hero2.attack();
hero3.attack();
}
}
```
输出结果为:
```
盲僧 发动了物理攻击!
提莫 发动了魔法攻击!
盖伦 发动了物理和魔法攻击!
```
阅读全文