Java 设计一个游戏包含以下三种角色:冒险家Adventurer、法师Mage和战士Warrior。他们都有名字、等级和攻击力Attack属性,冒险家和战士还有防御力Defense属性,法师还有魔法攻击力MagicAttack属性。 请通过抽象类、接口和多态实现以下功能: 1. 定义一个角色抽象类Character,包含名字、等级和攻击力属性,以及一个抽象方法 attack()。 2. 定义一个冒险家类和一个战士类分别继承自角色抽象类,并分别添加一个防御力属性。 3. 定义一个法师类实现一个魔法攻击力属
时间: 2024-03-22 17:42:28 浏览: 43
性,并实现Character抽象类中的attack()方法,输出“法术攻击!”的信息。
代码如下:
角色抽象类Character:
```java
public abstract class Character {
protected String name;
protected int level;
protected int attack;
public Character(String name, int level, int attack) {
this.name = name;
this.level = level;
this.attack = attack;
}
public abstract void attack();
}
```
冒险家类Adventurer:
```java
public class Adventurer extends Character {
protected int defense;
public Adventurer(String name, int level, int attack, int defense) {
super(name, level, attack);
this.defense = defense;
}
@Override
public void attack() {
System.out.println("冒险家攻击!");
}
}
```
战士类Warrior:
```java
public class Warrior extends Character {
protected int defense;
public Warrior(String name, int level, int attack, int defense) {
super(name, level, attack);
this.defense = defense;
}
@Override
public void attack() {
System.out.println("战士攻击!");
}
}
```
法师类Mage:
```java
public class Mage extends Character implements MagicAttack {
protected int magicAttack;
public Mage(String name, int level, int attack, int magicAttack) {
super(name, level, attack);
this.magicAttack = magicAttack;
}
@Override
public void attack() {
System.out.println("法术攻击!");
}
@Override
public int getMagicAttack() {
return magicAttack;
}
}
```
魔法攻击力接口MagicAttack:
```java
public interface MagicAttack {
int getMagicAttack();
}
```
使用多态实现:
```java
public class Game {
public static void main(String[] args) {
Character adventurer = new Adventurer("冒险家", 1, 10, 5);
Character warrior = new Warrior("战士", 1, 15, 8);
Character mage = new Mage("法师", 1, 8, 20);
adventurer.attack();
warrior.attack();
mage.attack();
if (mage instanceof MagicAttack) {
System.out.println("法师魔法攻击力为:" + ((MagicAttack) mage).getMagicAttack());
}
}
}
```
输出结果:
```
冒险家攻击!
战士攻击!
法术攻击!
法师魔法攻击力为:20
```