gpt4 book ai didi

java - 未实现所有接口(interface)方法的类

转载 作者:行者123 更新时间:2023-11-30 06:44:11 25 4
gpt4 key购买 nike

我在this forum上问了一个问题关于如何构建我的代码,假设一个对象可以以多种方式使用。

我有一个看起来像这样的武器类别:

public interface Weapon {
void attack();
}

和一个 Reloable 接口(interface):

public interface Reload {
void Reload(Bullet bullets);
}

有人建议我将重装方法与武器界面结合起来,但是,并非所有武器都是可重装的。根据用户的说法,我可以用 boolean 值检查武器是否可重新加载,所以我的武器界面现在是:

public interface Weapon {
void attack();
boolean isReloadable();
void Reload(Bullet bullets);
}

如果武器不可重新加载,则 boolean 值将返回 false,并且重新加载方法将保留为空。这是否违反了接口(interface)的所有方法都应该实现的原则?有替代方案吗?

最佳答案

将重新加载移动到单独的接口(interface)中的想法使您可以在定义类时根据需要混合和匹配接口(interface)。如果武器不可重新加载,请不要在对其建模的类中实现 Reloadable 接口(interface)。

这是一个例子:

class AK47 implements Weapon, Reloadable {
public void attack() {
System.out.println("rat-a-tat");
}
public void reload(Bullet bullets) {
System.out.println("+30 rounds");
}
}
class Chainsaw implements Weapon {
public void attack() {
System.out.println("Bzzzz");
}
}

您可以使用 instanceof 运算符来测试 Weapon 的实例是否可重新加载

关于java - 未实现所有接口(interface)方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43939980/

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