@Igor-Novikov

Как понять какого типа был объект?

Не могу понять один момент по полиморфизму. Его можно представить в виде игры.
Допустим у нас есть типы персонажей игры, которые наследуются от общего типа Hero.
class Hero {

}

class Hero1 extends Hero {

}

class Hero2 extends Hero {

}

class Hero3 extends Hero {

}

class Hero4 extends Hero {

}

class Hero5 extends Hero {

}

class Hero6 extends Hero {

}

Мы можем из трех типов персонажей сформировать команду, передав в их в конструктор.

public class Test {
  public static void main(String[] args){
    Hero2 hero2 = new Hero2();
    Hero4 hero4 = new Hero4();
    Hero6 hero6 = new Hero6();

    Team team = new Team(hero2,hero4,hero6);
  } 
}

class Team {
    public Team(Hero hero1, Hero hero2, Hero hero3){
      //
    }
}


Конструктор команды с общими параметрами Hero т.к мы не знаем какого типа персонажей выберут игроки.
Как после создания класса понять каких персонажей передали игроки в конструктор?
Только явно приводить к имеющимся типам если получится и если тип не совпадает ловить исключения?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
xISRAPILx
@xISRAPILx
Кратко не получится
Может вам поможет оператор instanceof?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Cheypnow
Суть полиморфизма как раз в том что бы не было необходимости узнавать конкретный тип. Достаточно имплементить единый интерфейс, а различающуюся логику писать в реализации.
Ответ написан
Комментировать
Konstantin18ko
@Konstantin18ko
Стоматолог
class Team {
    public Team(Hero1 hero1, Hero2 hero2, Hero3 hero3){
      //
    }
}


Так не проще?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы