3. 设计几个传奇角色(道士,法师,武士),然后有一个Play类,其中有一个方法,用来调用传入角色的打怪行为(一个角色打怪都不一样,道士是灵魂火符,法师是雷电术,武士是烈火术),每个类中的属性与方法请自行设计,但要体现继承与多态。
时间: 2024-09-08 08:04:25 浏览: 76
我们可以创建一个角色基类Role,然后分别继承这个基类的三个子类:道士(Daoist),法师(Mage),和武士(Warrior)。每个角色都有特有的打怪行为:
```java
// 角色基类 Role
public abstract class Role {
protected String name;
public Role(String name) {
this.name = name;
}
// 抽象的打怪方法,将在子类中具体实现
public abstract void fightBoss();
}
// 道士 Daoist 类
public class Daoist extends Role {
public Daoist() {
super("道士");
}
@Override
public void fightBoss() {
System.out.println(name + "使用灵魂火符攻击了怪兽...");
}
}
// 法师 Mage 类
public class Mage extends Role {
public Mage() {
super("法师");
}
@Override
public void fightBoss() {
System.out.println(name + "施展了雷电术击倒了怪兽...");
}
}
// 武士 Warrior 类
public class Warrior extends Role {
public Warrior() {
super("武士");
}
@Override
public void fightBoss() {
System.out.println(name + "挥舞烈火术烧死了怪兽...");
}
}
// Play 类
public class Play {
public void battle(Role character) {
character.fightBoss();
}
public static void main(String[] args) {
Daoist daoist = new Daoist();
Mage mage = new Mage();
Warrior warrior = new Warrior();
battle(daoist);
battle(mage);
battle(warrior);
}
}
```
在这个例子中,`Play`类的`battle()`方法接收一个`Role`类型的参数,无论传入的是`Daoist`,`Mage`,还是`Warrior`,都会调用对应角色的`fightBoss()`方法,展示了多态性。
阅读全文