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

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

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

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

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

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

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


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

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

15   голосов , оценка 4.267 из 5
Похожие ответы