有一动作冒险游戏,游戏角色(Character类)可以使用多种武器(Weapon抽象类)战斗(fight方法),武器包括刀Knife、弓箭Bow、斧头Axe等等,战斗时首先拿起武器,然后使用武器攻击(
时间: 2024-10-09 15:03:20 浏览: 34
Weapon Craft Run 武器组合跑酷Unity休闲武器拼装跑酷迷你小游戏项目源码C#
在这个动作冒险游戏中,角色类和武器类的设计体现了面向对象的三大特性之一——封装。Character类是一个抽象的角色模板,它包含一个或多个方法,如`takeWeapon()`用于拿起武器,`fight()`用于开始战斗。Weapon抽象类则是一个武器的通用接口,定义了共同的行为,如`attack()`。
例如:
```java
abstract class Weapon {
abstract void attack();
}
class Knife extends Weapon {
@Override
void attack() {
// 刀的攻击逻辑
System.out.println("使用匕首攻击...");
}
}
class Bow extends Weapon {
@Override
void attack() {
// 弓箭的攻击逻辑
System.out.println("发射箭矢...");
}
}
class Axe extends Weapon {
@Override
void attack() {
// 斧头的攻击逻辑
System.out.println("挥动斧头砍击...");
}
public void fight() {
// 拿起并攻击
Character character = new Character();
weapon = takeWeapon(); // 获取当前武器
weapon.attack();
}
}
class Character {
private Weapon weapon;
Weapon takeWeapon() {
// ...获取并设置武器逻辑...
}
void fight() {
weapon.fight();
}
}
```
在这个场景中,当角色拿起武器并调用`fight()`方法时,实际执行的是所持武器的`attack()`方法,这就是多态的应用。
阅读全文