gpt4 book ai didi

java - 如何为一个方法定义多个实现?

转载 作者:行者123 更新时间:2023-11-29 03:43:58 25 4
gpt4 key购买 nike

为了稍微玩一下,我正在尝试通过命令行制作一款由两名玩家组成的回合制战斗游戏。每个玩家控制一个怪物,最多有 4 个不同的 Action 。我定义了 Monster 和 Move 类来定义不同的怪物和 Action 。当玩家使用招式时,我想我想在招式中调用类似 performOn(Monster mon) 的方法来使用。在那个方法中,我想定义移动的实现,因为不是每个移动都会做同样的事情。我很确定 Java 可以做到这一点,但我不完全确定它是如何完成的。对于 Monster 和 Move 类,我都有一个内部 Builder 类来避免大的构造函数方法。如果有人对如何执行 Action 有更好的想法,请随时分享。 :)

谢谢!

例子:

// moves is a HashMap<String, Move>
monster1.moves.get("Firebreath").performOn(monster2); // damages monster2
monster2.moves.get("Heal").performOn(monster2); // heals monster2

最佳答案

您可以为 Move 创建一个父类(super class),所有特殊 Action 都可以扩展它:

public abstract class Move
{
public abstract void performOn(Monster m);
}

然后扩展:

public class FirebreathMove extends Move
{
public void performOn(Monster m)
{
// do something to Monster
}
}

或者你可以创建一个接口(interface):

public interface Move
{
public void performOn(Monster m);
}

你的 Action 可以实现它:

public class FirebreathMove implements Move
{
public void performOn(Monster m)
{
// do something to Monster
}
}

在任何一种情况下,您都会引用一个可以调用performOn(Monster)Move,但这取决于是否所有的移动都具有某种共同点您想要子类化的功能(第一个方法,带有父类(super class))或者如果 Moves 也可以是其他东西,您只需要 performOn(Monster) 方法签名。例如,如果你有类似武器的东西,它有一个移动:

public class FancyWeapon extends Weapon implements Move
{

}

关于java - 如何为一个方法定义多个实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876231/

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