Читайте также:
|
|
Полиморфизм предоставляет подклассу способ определения собственной версии метода, определенного в его базовом классе, с использованием процесса, который называется переопределением метода (method overriding). Чтобы пересмотреть текущий дизайн, нужно понять значение ключевых слов virtual и override. Если базовый класс желает определить метод, который может быть (но не обязательно) переопределен в подклассе, он должен пометить его ключевым словом virtual. Методы, помеченные ключевым словом virtual, называются виртуальными методами.
(этот код вставляем в проект EmployeeExample, класс Employee, добавляем virtual в описании метода GiveBonus)
Задание!!!: протестировать, исправить возможные ошибки
Когда класс желает изменить реализацию деталей виртуального метода, он делает это с помощью ключевого слова override. Например, SalesPerson и Manager могли бы переопределить GiveBonus (), как показано ниже (предполагая, что PTSalesPerson не будет переопределять GiveBonus (), а потому просто наследует версию, определенную SalesPerson):
(этот код вставляем в проект EmployeeExample, класс SalesPerson)
(этот код вставляем в проект, класс Manager)
Задание!!!: протестировать, исправить возможные ошибки
Обратите внимание на использование каждым переопределенным методом поведения по умолчанию через ключевое слово base. Таким образом, полностью повторять реализацию логики GiveBonus () вовсе не обязательно, а вместо этого можно повторно использовать (и, возможно, расширять) поведение по умолчанию родительского класса. Также предположим, что текущий метод DisplayStatus () класса Employee объявлен виртуальным. При этом каждый подкласс может переопределять этот метод в расчете на отображение количества продаж (для продавцов) и текущих опционов на акции (для менеджеров). Например, рассмотрим версию метода DisplayStatus () в классе Manager
(этот код вставляем в проект EmployeeExample, класс Manager)
Задание!!! Реализовать аналогичным образом, вывод на консоль количества продаж (метод DisplayStatus () для класса SalesPerson). Протестировать, исправить возможные ошибки
Теперь, когда каждый подкласс может интерпретировать, что именно эти виртуальные методы означают для него, каждый экземпляр объекта ведет себя как более независимая сущность:
(этот код вставляем в проект EmployeeExample, метод Main)
Задание!!!: протестировать, исправить возможные ошибки
Дата добавления: 2015-07-25; просмотров: 111 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Ключевое слово sealed | | | Абстрактные классы |