Java——抽象类和接口(interface)

标签 java oop interface abstract-class

我正在开发我的 java 项目,这是一个基本的角色扮演游戏,我有一个 OOD 问题(我想这很简单,但这是我的第一个 java 项目)。我开始研究武器,我创建了一个抽象 Weapon 类,其中包含一个名为 Attack 的抽象方法。 Weapon有两个子类——MeleeWeapon和RangedWeapon,都有攻击方法,还好。

然后我想到了另一件事 - 如果像矛这样的近战武器物体可以用于近战并且还可以 throw 会发生什么?在这种情况下,什么是好的解决方案?

最佳答案

一种选择是使用组合而不是继承。

每种武器都可以提供一组攻击。例如,Weapon.getAttacks() 返回一组受支持的攻击。在子类中,Spear.getAttacks() 返回 ThrustThrowBashBashBash 的实例。

这允许您使用多种武器进行相同的攻击。狼牙棒和长矛都可以提供重击攻击——只是生命值伤害不同。您可以用长矛或 10 英尺长的杆子进行刺击。你可以扔一本咒语书。 (这些事情比你想象的更有害。)一般来说,你可以定义任何对象的任何操作的结果。

关于Java——抽象类和接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554916/

相关文章:

java - 在 Java 中使用泛型时出现空指针异常

java - 接口(interface)中的泛型?

java - 无法获取脚本文件 linux

Java 递归传值

java - Java中如何在另一个类中调用一个类的参数化构造函数

c# - C# 接口(interface)的隐式和显式实现之间的区别

php获取接口(interface)方法

java - 如何计算流过滤器上的匹配项?

java - 仅允许登录用户下载 servlet

java - Java中的正则表达式可以分割特殊字符和字母数字