利用多态写一个英雄无敌
时间: 2023-09-08 11:04:18 浏览: 196
一个多态的例子
### 回答1:
好的,以下是利用多态写一个英雄无敌的示例代码:
```java
public class Hero {
private String name;
private int hp;
private int attack;
public Hero(String name, int hp, int attack) {
this.name = name;
this.hp = hp;
this.attack = attack;
}
public void attack() {
System.out.println(name + " 发起了攻击,造成了 " + attack + " 点伤害。");
}
public void takeDamage(int damage) {
hp -= damage;
System.out.println(name + " 受到了 " + damage + " 点伤害,剩余生命值:" + hp);
}
}
public class Warrior extends Hero {
public Warrior(String name, int hp, int attack) {
super(name, hp, attack);
}
@Override
public void attack() {
System.out.println("战士 " + getName() + " 发起了攻击,造成了 " + getAttack() + " 点伤害。");
}
@Override
public void takeDamage(int damage) {
System.out.println("战士 " + getName() + " 受到了 " + damage + " 点伤害,剩余生命值:" + (getHp() - damage));
setHp(getHp() - damage);
if (getHp() <= 0) {
System.out.println("战士 " + getName() + " 已经死亡。");
}
}
}
public class Mage extends Hero {
public Mage(String name, int hp, int attack) {
super(name, hp, attack);
}
@Override
public void attack() {
System.out.println("法师 " + getName() + " 发起了攻击,造成了 " + getAttack() + " 点伤害。");
}
@Override
public void takeDamage(int damage) {
System.out.println("法师 " + getName() + " 受到了 " + damage + " 点伤害,剩余生命值:" + (getHp() - damage));
setHp(getHp() - damage);
if (getHp() <= 0) {
System.out.println("法师 " + getName() + " 已经死亡。");
}
}
}
public class Main {
public static void main(String[] args) {
Hero hero1 = new Warrior("战士1", 100, 20);
Hero hero2 = new Mage("法师1", 80, 30);
hero1.attack();
hero2.attack();
hero1.takeDamage(10);
hero2.takeDamage(20);
}
}
```
这个示例代码定义了一个 Hero 类,它有一个名字、生命值和攻击力属性,以及攻击和受伤的方法。然后它定义了两个子类 Warrior 和 Mage,它们分别继承 Hero 类,并重写了攻击和受伤的方法。在 Main 类中,它创建了一个战士和一个法师对象,并分别调用它们的攻击和受伤方法。因为它们都是 Hero 类型的对象,所以可以通过多态的方式来调
### 回答2:
英雄无敌是一个经典的游戏,利用多态可以轻松实现这个游戏的角色系统。我们可以定义一个抽象的英雄类,包含基本属性和方法,然后创建多个子类继承该抽象类,每个子类代表不同类型的英雄,具有特定的属性和技能。
首先,我们创建一个英雄抽象类,包含名字、血量和攻击力属性,并定义攻击和受伤的方法。然后,创建多个子类,如战士、法师和射手等,继承英雄类,并在子类中实现不同的技能和特性。
例如,战士类重写了攻击方法,可以使用近战武器攻击敌人,同时具有高血量和防御力。法师类则重写了攻击方法,可以发动魔法攻击,但血量较低,需要远离敌人进行作战。射手类则可以远程射击,具有较高的攻击力,但较低的防御力。每个子类都可以根据具体需求定义不同的技能和属性,增加游戏的多样性和趣味性。
在游戏中,我们可以创建一个英雄数组,存储不同类型的英雄对象,并通过遍历数组,调用各个英雄对象的方法,实现不同的攻击和操作。由于多态的特性,我们可以通过父类引用指向子类对象,使得程序更加灵活和可扩展。
总之,利用多态可以编写一个英雄无敌的游戏,通过定义抽象类和子类继承,实现不同类型英雄的属性和技能。这样设计的游戏可以提供丰富的选择和策略性,让玩家在游戏中享受到不同英雄带来的乐趣和挑战。
阅读全文