Есть Класс 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();
Если это сделать нельзя,то буду благодарен за альтернативное решение проблемы
// Базовый игровой персонаж, с характерными признаками и действиями любого персонажа игры
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();
}
}
Продвижение своими сайтами как стратегия роста и независимости