1.按文档要求定义法师、战士两个子类,继承Role 2.替换Role中的showInfo方法替换成重写的toString方法 3.测试类中,使用法师、战士进行对战
时间: 2024-10-14 17:12:10 浏览: 8
好的,首先我们需要定义一个名为`Role`的父类作为角色的通用模板,然后创建两个子类`Mage`(法师)和`Warrior`(战士),它们都继承自`Role`。
```java
// 定义Role父类
public abstract class Role {
protected String name;
public Role(String name) {
this.name = name;
}
// 定义一个抽象的toString方法,用于展示基础信息
@Override
public abstract String toString();
}
// 定义Mage子类
public class Mage extends Role {
public Mage(String name) {
super(name);
}
@Override
public String toString() {
return "我是魔法师:" + name;
}
}
// 定义Warrior子类
public class Warrior extends Role {
public Warrior(String name) {
super(name);
}
@Override
public String toString() {
return "我是战士:" + name;
}
}
```
接下来,我们替换`Role`类中的`showInfo`方法为`toString`方法,因为Java里没有直接的`showInfo`方法,但在实际项目中,`toString`方法可以起到类似的作用:
```java
public class Role {
// ...其他部分...
// 替换showInfo为toString
@Override
public String toString() {
return getClass().getSimpleName() + ": " + name;
}
}
```
最后,在测试类中,我们可以创建法师和战士实例,并进行对战:
```java
public class BattleTest {
public static void main(String[] args) {
Mage mage = new Mage("阿尔萨斯");
Warrior warrior = new Warrior("甘道夫");
System.out.println(mage); // 输出:Mage: 阿尔萨斯
System.out.println(warrior); // 输出:Warrior: 甘道夫
// 这里只是一个示例,实际上你可能需要设计更复杂的战斗逻辑
System.out.println("对决结果:" + mage.toString() + " vs " + warrior.toString()); // 输出:对决结果:Mage: 阿尔萨斯 vs Warrior: 甘道夫
}
}
```
阅读全文