Полиморфизм: Почему в объекте нет свойства дочернего класса - C#

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

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

class A
    {
        public int a = 1;
        public int c = 5;
        virtual public void Fun()
        {
            a = a + c;
            Console.Write(a);
        }
    }
    class B : A
    {
        public int d = 3;
        public override void Fun()
        {
            a = a + c + d;
            Console.Write(a);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A r = new B();
            //r.a;
            //r.c;
            //r.d;//нет такого свойства
            r.Fun();
        }
    }
Хотелось бы услышать ваше мнение: "Почему в объекте нет свойства дочернего класса?" Да я знаю что тут используется полиморфизм, но почему так происходит??

Решение задачи: «Полиморфизм: Почему в объекте нет свойства дочернего класса»

textual
Листинг программы
class A
    {
        public int a = 1;
        public int c = 5;
        virtual public void Fun()
        {
            a = a + c;
            Console.Write(a);
        }
    }
    class B : A
    {
        public int d = 3;
        public B(int i)
        {
           this.d=i;
        }
        public override void Fun()
        {
            a = a + c + d;
            Console.Write(a);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            A r = new B(5);
            //r.a;
            //r.c;
            //r.d;//нет такого свойства
            Console.Write(((B)r).d);
            r.Fun();
        }
    }

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


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

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

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