Я пишу игру с объектами, в которых я хочу использовать разные команды в зависимости от класса.У меня есть суперкласс «Предмет», подкласс «Инструмент расширяет Предмет» и «Молот расширяет Инструмент».В суперклассе Item (который является абстрактным) у меня есть абстрактный метод doCommand, который я переопределяю в Tool.Это хорошо работает, и теперь у меня есть рабочий doCommand в Tool.Но когда я хочу переопределить этот doCommand в Hammer, он просто использует инструмент 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;
}
}
Я ожидаю, что он напечатает «Переопределено».но я получаю "Не переопределено".