gpt4 book ai didi

java - 我需要关于我的抽象类是否应该是接口(interface)的建议(反之亦然)

转载 作者:行者123 更新时间:2023-12-03 23:13:41 24 4
gpt4 key购买 nike

我的 JavaFX 游戏中有一个继承层次结构建模实体。我的游戏中有 4 种敌人类型,但是它们只需要 Entity(抽象类)中方法的默认实现 + 1 个额外的方法,其中每个敌人将提供不同的实现。以后也不会再有敌人了。所以从这个背景来看,我认为 Enemy 应该是一个界面。

所以我的问题是,我假设 Enemy 应该是抽象类的接口(interface)是否正确?

这是我的类图(目前以敌人作为抽象类):

Class Diagram

最佳答案

选择接口(interface)而不是抽象类总是好的,因为它启用了extension您的应用程序。

在 Java-8 之前,抽象类是一种提供共享部分实现的方法,因为 Java-8 接口(interface)不能有方法定义。

In Java-8, interfaces have default methods which allow definition shared implementations.



因此,我的建议是在这里使用接口(interface)并提供默认方法。如果您需要在契约(Contract)之外提供一些额外的实现,您总是可以选择抽象实现或具体实现。

在您的情况下,实体的任何表示都应由接口(interface)支持。

因此,您的图表如下所示
interface Entity extends cloneable{
//...
}

interface Enemy extends Entity{
//...
}

interface User extends Entity, Serializable{
//...
}

class Player implements User {
//...
}

class Dragon implements Enemy{
//...
}

关于java - 我需要关于我的抽象类是否应该是接口(interface)的建议(反之亦然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58621866/

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