- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为游戏创建角色类。
关于字符类:-它有不同的角色,例如战士、射手、国王。- 每个都有不同的属性,例如攻击、防御。
我的问题是我应该使用继承还是组合?我有一个 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/
您好,我正在使用 AWS EKS 开发 kubernetes。当我将 docker-compose 文件转换为 kompose 文件时,我遇到了 kompose 文件的问题,我遇到了卷挂载点问题,而且
在将密码转换为二进制哈希值以存储在数据库中时,我注意到除了通常的乱码之外,还有一些引号、空格和字母表,这些巧合可能构成有效 SQL 语句的一部分。 出于好奇,我想知道是否有人遇到过任何字符串在哈希后神
我的组件具有动态部分和 compose。动态部分在其他模块中,即节点项目。 如果我想在页面中使用自定义元素,例如: 我收到一条错误消息,指出无法在 ./my-custom-element/someV
我有一个 pandas 数据框,其中一列由数组组成。所以每个单元格都是一个数组。 假设数据框 df 中有一个列 A,这样 A = [ [1, 2, 3], [4, 5, 6],
当 HTTP 请求和响应在互联网上传输时,请求中文本的格式是什么?是 ASCII 码吗? 例子:如果 HTTP 请求如下所示 - GET /mysite/ HTTP/1.1 -- rest of t
我是一名优秀的程序员,十分优秀!