Проблема с методом субкласса

145
16 июня 2022, 03:40

Есть Класс Game с Arraylist-ом,в котором номинально содержатся объекты player
Класс Wolf унаследован от player, и имеет метод kill()

public class Game {
    static ArrayList<player> players = new ArrayList<player>(); 

Arraylist содержит объекты как player,так и Wolf
Так вот при переборе этого ArrayList-а надо сделать так,чтобы метод субкласса использовался как в коде показанном ниже,для объектов Wolf разумеется

for(player ppl : players) {
            if(ppl.Role == "Wolf") {
                ppl.kill();

Если это сделать нельзя,то буду благодарен за альтернативное решение проблемы

Answer 1
// Базовый игровой персонаж, с характерными признаками и действиями любого персонажа игры
class Character {
}
// Игрок тоже игровой персонаж
class Player extends Character {
}
// Киллером могут быть и не только волки
interface Killer {
    void kill();
}
// Волк это не только игровой персонаж, но и киллер
class Wolf extends Character implements Killer {
    void kill() {
        // Характерный для волка почерк в убийстве
    }
}
class Game {
    static ArrayList<Character> characters = new ArrayList<Character>(); // Почему static?
    ...
}
for(Character ch : Game.characters) {
    if(ch instanceof Killer) { // Любой киллер, а не только волки
        // если нужны именно волки, то if (ch instanceof Wolf)
        ((Killer)ch).kill();
    }
}
READ ALSO
Как наложить png изображения друг на друга в java?

Как наложить png изображения друг на друга в java?

Пишу клиент-серверное приложение (браузерная игра) в командеЯвляюсь backend программистом

162
Java JSON parse error

Java JSON parse error

Подскажите, пожалуйстаЕсть 2 таблицы в БД с соотношением @ManyToMany с соединением через третью таблицу

221
Приведение double к short в Java

Приведение double к short в Java

При попытке привести double x к типу short

187
Обход и добавление в БДП

Обход и добавление в БДП

Изучаю структуры данных и пытаюсь создать бинарное дерево поиска с дженериками и пройтись по нему в глубину in orderКогда вызываю метод inOrder...

174