gpt4 book ai didi

java - 游戏角色类的设计、继承还是构成?

转载 作者:行者123 更新时间:2023-12-04 12:51:09 24 4
gpt4 key购买 nike

我正在尝试为游戏创建角色类。

关于字符类:-它有不同的角色,例如战士、射手、国王。- 每个都有不同的属性,例如攻击、防御。

我的问题是我应该使用继承还是组合?我有一个 Character 类,那么我应该创建 warrior 类并扩展 character 类,还是应该在 Character 类中放置一个标识符,如 String ID ="Warrior"?

最佳答案

如果有属性组合的选项(例如,如果您有一个 WarriorKing 类),我会做的是对类 + 接口(interface)使用继承。

如果您想享受这两种类型的属性,例如 WarriorKing,您可以这样做:

class Character { ... }

interface Warrior {...}

interface King {...}

abstract class KingImpl extends Character implements King

abstract class WarriorImpl extends Character implements Warrior

然后将所有内容组合起来:

class WarriorKing extends Character implements Warrior, King {
private King kingImpl;
private Warrior warriorImpl;

public WarriorKing() {
kingImpl = new KingImpl();
warriorImpl = new WarriorImpl();

}

现在假设您在 Warrior 接口(interface)中有一个方法 kill() 需要由每个实现类实现(WarriorKing 必须实现它),并且已经在抽象 WarriorImpl 类中实现,你可以这样做:

class WarriorKing extends Character implements Warrior, King {
private King kingImpl;
private Warrior warriorImpl;

public WarriorKing() {
kingImpl = new KingImpl();
warriorImpl = new WarriorImpl();

}

public void kill() {
this.warriorImpl.kill()
}

}

通过这种方式,您可以通过一次实现所有内容、采用模块化类设计来享受所有世界,并且您可以享受您可能需要的任何角色组合。祝你好运!

关于java - 游戏角色类的设计、继承还是构成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15931079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com