1
17
您可以将接口视为“契约”。您正在定义一组实现此接口的类必须实现的方法。
另一方面,当您有一些代码可能是要实现的所有子类的公共代码时,则使用抽象类。因此,您可能有一个名为Shape的抽象类,它有一些公共代码,在派生类(圆、正方形等)中,您可以有特定于这些形状的代码(
你可以把这两个想法结合起来。您可以拥有实现接口的抽象类,这将使您两全其美。 这些概念在OO中被反复使用,因此理解它们很重要。你似乎正在路上:)。
因此,如果你的僵尸类有一些常见的行为,适用于所有类型的僵尸,它听起来像是一个很好的候选人是一个抽象类。您还可以考虑创建一个接口(可能是
|
2
4
当有疑问时,我选择遵循GOF范式。 封装变化 相反,**聚合什么是公共的**-使用抽象类来定义多态关联中的公共行为。我在设计对象之间的关系时使用这些原则。 |
3
3
任何具体的僵尸你可能想使拥有任何组合的步行,跑步或传送功能,你想实现。
我认为乔什·布洛赫的《有效的Java》(第二版)可以被看作是“当前的思维”。。。 因此,您可以将所有行为实现为独立的类,然后通过实现&组成。。
|
4
1
我会将Zombie作为一个抽象类来编写,以避免重新定义x、y、health等字段。。。 对于Survivor类,我只需将要在外部使用的函数声明为public。我在全班最前面声明了公共函数。当只有一个类实现一个接口时,声明该接口将添加一个要维护的文件。避开它。 |
5
1
没有人同意在超级/抽象类上使用接口;)
如果你真的很喜欢这种东西,你可能也想看看混血儿。它不是Java直接支持的东西,但是有为它构建的库。 |
6
1
抽象类将是僵尸的超级类。接口在某种意义上也可以是僵尸的超级类(超级接口?)。
不知道你这是什么意思。 如果你有不同种类的怪物(地精、兽人等),你可能会发现这些怪物的共同行为会属于不同的基类。这将建议一个接口。
大多数游戏将所有这些角色类型视为某种怪物,因为它们都有许多共同的属性(健康)。魔法、宝藏、武器等) 所以也许这更像是一个接口的论据。 请参见: Using inheritance and polymorphism to solve a common game problem Class diagram examples for RPG (Role Playing Game) designing class hierarchy for typical characters in role playing game |
7
0
我不认为在您的例子中,您的接口和类结构与实际情况吻合得很好。事实上,我相信(如果我错了请纠正我)每一个僵尸都可以行走、奔跑、传送等,这取决于它在哪里。
因此,您应该有一个zombie类或接口,并具有修改zombie状态的操作。这个动作可能是一个接口或抽象类,这样你就可以将任何动作应用到僵尸身上,而不必知道具体的动作是什么(例如。
|
8
0
就你的僵尸例子来说,这个接口会做得很好,除非你有你想要所有僵尸都做的通用代码。
假设你有一个
|
9
0
我的意见是你最好用抽象类叫做
生物
僵尸
所有类型的僵尸。
|
timurichk · 我的类不重写抽象方法compareTo 6 年前 |
Steffn · angular 4中抽象类的动态多提供程序 6 年前 |
Fabio Piunti · Abstract类子类的调用方法 7 年前 |
Sunny Deshmukh · 可以从Java中的多个抽象类继承吗? 7 年前 |
Felix · 初始化抽象类的一般变量 7 年前 |
wheeeee · Scala对象扩展了抽象类/特征,访问伴随类字段 7 年前 |