Java 设计一个游戏包含以下三种角色:冒险家Adventurer、法师Mage和战士Warrior。他们都有名字、等级和攻击力Attack属性,冒险家和战士还有防御力Defense属性,法师还有魔法攻击力MagicAttack属性。 请通过抽象类、接口和多态实现以下功能: 1. 定义一个角色抽象类Character,包含名字、等级和攻击力属性,以及一个抽象方法 attack()。 2. 定义一个冒险家类和一个战士类分别继承自角色抽象类,并分别添加一个防御力属性。 3. 定义一个法师类实现一个魔法攻击力属
时间: 2024-03-23 17:38:40 浏览: 49
Java面向对象三大特性,即封装、继承、多态
5星 · 资源好评率100%
性,并实现角色抽象类中的攻击方法。 4. 定义一个角色接口Role,包含一个获取角色名字的方法 getRoleName()。 5. 在冒险家、法师、战士类中分别实现角色接口,并实现其方法。 6. 定义一个游戏角色工厂类RoleFactory,包含一个创建角色的方法 createRole(String roleName),根据传入的角色名字创建对应的角色对象(冒险家、法师、战士),并返回一个角色对象。 7. 定义一个游戏角色管理类RoleManager,包含一个角色列表属性和两个方法:添加角色方法addRole(Role role)和删除角色方法removeRole(Role role)。 8. 在主函数中,创建一个游戏角色工厂对象和游戏角色管理对象,通过工厂创建几个不同类型的角色对象,并添加到角色管理对象中,最后输出所有角色的名字和攻击力。
代码如下:
```
//角色抽象类
abstract class Character {
private String name;
private int level;
private int attack;
public Character(String name, int level, int attack) {
this.name = name;
this.level = level;
this.attack = attack;
}
public String getName() {
return name;
}
public int getLevel() {
return level;
}
public int getAttack() {
return attack;
}
public abstract void attack();
}
//冒险家类
class Adventurer extends Character {
private int defense;
public Adventurer(String name, int level, int attack, int defense) {
super(name, level, attack);
this.defense = defense;
}
public int getDefense() {
return defense;
}
public void attack() {
System.out.println("冒险家" + getName() + "攻击力为" + getAttack());
}
}
//战士类
class Warrior extends Character {
private int defense;
public Warrior(String name, int level, int attack, int defense) {
super(name, level, attack);
this.defense = defense;
}
public int getDefense() {
return defense;
}
public void attack() {
System.out.println("战士" + getName() + "攻击力为" + getAttack());
}
}
//法师类
class Mage extends Character implements Role {
private int magicAttack;
public Mage(String name, int level, int attack, int magicAttack) {
super(name, level, attack);
this.magicAttack = magicAttack;
}
public int getMagicAttack() {
return magicAttack;
}
public void attack() {
System.out.println("法师" + getName() + "攻击力为" + getMagicAttack());
}
public String getRoleName() {
return "法师";
}
}
//角色接口
interface Role {
String getRoleName();
}
//游戏角色工厂类
class RoleFactory {
public Character createRole(String roleName) {
if (roleName.equals("冒险家")) {
return new Adventurer("小明", 1, 10, 5);
} else if (roleName.equals("战士")) {
return new Warrior("小红", 1, 15, 8);
} else if (roleName.equals("法师")) {
return new Mage("小李", 1, 8, 20);
} else {
return null;
}
}
}
//游戏角色管理类
class RoleManager {
private List<Role> roles = new ArrayList<Role>();
public void addRole(Role role) {
roles.add(role);
}
public void removeRole(Role role) {
roles.remove(role);
}
public void showAll() {
for (Role role : roles) {
System.out.println(role.getRoleName() + ":" + role.getAttack());
}
}
}
//测试类
public class Test {
public static void main(String[] args) {
RoleFactory factory = new RoleFactory();
RoleManager manager = new RoleManager();
Character adventurer = factory.createRole("冒险家");
Character warrior = factory.createRole("战士");
Character mage = factory.createRole("法师");
manager.addRole((Role) adventurer);
manager.addRole((Role) warrior);
manager.addRole((Role) mage);
manager.showAll();
}
}
```
输出结果:
```
冒险家:10
战士:15
法师:8
```
阅读全文