Абстрактные классы. Доступ к переменным - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Столкнулся с такой проблемой. У меня есть абстрактный класс
Листинг программы
  1. public abstract class Hero{
  2. public abstract void UpgradeHero ();
  3. }
Я создаю дочерние классы
Листинг программы
  1. public class Superman:Hero{
  2. public int power; // вот сюда обратить внимание, эти данные только у Супермэна
  3. public abstract void UpgradeHero (){
  4. power += 1;
  5. }
  6. }
Листинг программы
  1. public class Batman:Hero{
  2. public float money; // вот сюда обратить внимание, эти данные только у Бэтмена
  3. public bool isHaveRobin;
  4. public abstract void UpgradeHero (){
  5. money += 1 * 100f;
  6. isHaveRobin = true;
  7. }
  8. }
В основной программе я создаю список всех героев.
Листинг программы
  1. void Main() {
  2. List<Hero> allHeroesInGame = new List<Hero>();
  3. allHeroesInGame.Add( new Superman() );
  4. allHeroesInGame.Add( new Batman() );
  5. // я точно знаю что индекс 0 = супермэн, индекс 1 = бэтмен
  6. // вот тут и проблема. Как это можно реализовать, если это вообще возможно
  7. int powerSuperman = allHeroesInGame[ 0 ].power;
  8. }
Вопрос вот в чём, есть ли какой нибудь способ получить доступ к полям ДОЧЕРНЕГО от Hero класса: у супермэна power, у бэтмена к money. Получить через список allHeroesInGame? Типа
Листинг программы
  1. int сила_супермэна = allHeroesInGame[ 0 ].power
  2. float состояние_бэтмена = allHeroesInGame[ 1 ].money
  3. bool есть_робин = = allHeroesInGame[ 1 ].isHaveRobin;
Подскажите способ как это вообще можно реализовать? Спасибо!

Решение задачи: «Абстрактные классы. Доступ к переменным»

textual
Листинг программы
  1. Superman super = allHeroesInGame[0] as Superman;
  2. int powerSuperman = super.power;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы