Запись в экземпляр базового класса экземпляра производного
Сайт создан в системе uCoz
Меню сайта


Поиск по сайту
Loading


Форма входа


Помощь проекту

PayPal:

LiqPay or Credit/Debit Card:

W1 "Единый кошелек":
199990419310
WebMoney:
WME - E509190786817
WMZ - Z195499640086
WMU - U204403357554
WMR - R280087882619




Активные темы

  • Все вопросы касающиеся Neil Scope (7126)
  • инвертор на микропроцессоре с 12\220v с синусом на выходе (3)
  • Предложения по работе сайта и форума (18)
  • Изготовление ПП (7)
  • NeiLogicAnalyzer (48)
  • Двухполярный линейный БП с управлением на МК (91)
  • Заказ плат под NeilScope3 (12.2015) (60)
  • Первое знакомство с микроконтроллерами Silabs (105)
  • Куплю плату NS-3 (0)
  • Подскажите (0)



  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0



    Рекомендуемые браузеры: Mozzilla, Google Chrome






    Приветствую Вас, Пробегающий мимо · RSS 20.04.2024, 13:10

    Основы C#. Урок 13. Запись в экземпляр базового класса экземпляра производного

    В переменной типа базового класса можно хранить и переменные производных класов. Например, текст метода Main из класса Test прошлого урока можно переписать следующим образом:

     ...
     static void Main(string[] args)
     {
     Worker wrk1 = new Boss();
     ...

    Здесь мы объявили переменную wrk1 типа Worker. Вот другой пример на эту же тему:

     Worker wrk1;
     Boss boss = new Boss();
     wrk1=boss;
     ...

    Здесь мы опять записываем в переменную wrk1 (типа Worker) переменную boss (типа Boss).

    Но, несмотря на то, что мы записываем в переменную wrk1 или с помощью оператора new или посредством присваивания экземпляр производного класса, все равно методы производного класса мы использовать не можем (на самом деле из производного класса мы не сможем использовать не только методы, но и переменные)!

    Например, в следущие строки выведут на экран 50, а не ноль:

     wrk1.setAge(50); //Вызывается метод класса Worker, а не класса Boss
     Console.WriteLine("Возраст работника " + wrk1.getAge());

    Как с этим бороться, мы рассмотрим на следующем уроке, а пока поясним, почему это может оказаться важным. Например, в вашей фирме есть работники разных типов - программисты, директора, бухгалтера и т. п. Так как у все категорий работников есть что-общее, что вы можете создать базовый класс Worker и производные от него специализированные классы. Далее вы можете в вашей программе объявить массив типа Worker. Так вот, в этом массиве можно будет хранить всех работников (т. е. экземпляры всех классов, производных от класса Worker). И это удобно - одним циклом вы сможете начислить всем зарплату и т. п.