Обращение к полю производного класса по ссылке базового класса - C#

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

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

Описывается базовый и производный класс. В методе Main создается объект производного класса и присваивается ссылке типа базового класса. При выводе на экран значения поля производного класса возникает ошибка (но при этом поле базового класса выводится). Подскажите пожалуйста, как сделать так, чтобы к полям объекта производного класса можно было обращаться по ссылке базового класса ? (для методов вроде бы используется virtual и override)
class Auto
    {
        public int engine = 100;
    }
 
    class Nissan : Auto
    {
        new public int num = 650;
    }    
 
    class Program
    {
        static void Main(string[] args)
        {
            Auto auto;
            Nissan nissan = new Nissan();
            auto = nissan;
            Console.WriteLine(auto.engine);
            Console.WriteLine(auto.num); // ошибка
        }
    }

Решение задачи: «Обращение к полю производного класса по ссылке базового класса»

textual
Листинг программы
    class Auto
    {
        public int engine { get; set; }
        public Auto(int engine)
        {
            this.engine = engine;
        }
        public Auto()
        {
            this.engine = 100;
        }
 
    }
 
    class Nissan : Auto
    {
        public int num { get; set; }
        public Nissan (int num, int engine) : base(engine)
        {
            this.num = num;
            this.engine = engine;
        }
        public Nissan() :base()
        {
            this.num = 650;
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Auto auto;
            Nissan nissan = new Nissan();
            auto = nissan;  
            Console.WriteLine(auto.engine);
            Console.WriteLine(((Nissan)auto).num); 
            Console.ReadKey();
        }
    }

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


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

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

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