我正在编写一个带有对象的游戏,我想根据它的类使用不同的命令。我有一个超类“项目”、一个子类“工具扩展项目”和“锤子扩展工具”。在 Item 超类(它是抽象的)中,我有一个抽象方法“doCommand”,我在 Tool 中重写了它。这很好用,我现在在工具中有一个工作的“doCommand”。但是当我想在 Hammer 中覆盖这个“doCommand”时,它只使用工具的“doCommand”。
public abstract class Item {
public abstract void doCommand(String com1, Item i, Player player);
}
public class Tool extends Item {
public void doCommand(String com, Item i, Player player) {
System.out.println("Not overridden.");
}
}
public class Hammer extends Tool {
public void doCommand(String com, Item i, Player player) {
System.out.println("Overridden.");
}
}
这是来自调用该方法的类的部分。上面的代码只是正在发生的事情的简化代码。
String parts[] = com.split(" ");
String com1 = parts[0];
String com2 = parts[1];
for (Item i : player.getItems()) {
if (com2.toUpperCase().equals(i.getName().toUpperCase())) {
i.doCommand(com1, i, player);
break;
}
}
我希望它打印“覆盖”。但我得到“没有被覆盖。”。
呼啦一阵风
侃侃尔雅
相关分类