Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Ключевые слова virtual и override

Пример 1. | Построение цепочки вызовов конструкторов с использованием this. | Инкапсуляция с использованием традиционных методов доступа и изменения | Инкапсуляция с использованием свойств .NET | Свойства, доступные только для чтения и только для записи | Статические свойства | Статические конструкторы | SetFullName (fullName); | Полиморфный интерфейс | Сокрытие методов |


Читайте также:
  1. CIL-код, генерируемый для ключевого слова new
  2. I. Перепишите следующие предложения. Определите по грамматическим признакам, какой частью речи являются слова, оформленные окончанием
  3. I. ПЕРЕПИШИТЕ СЛОВА И ВЫРАЖЕНИЯ В СВОЙ СПОРТИВНЫЙ СЛОВАРЬ, НАПИШИТЕ ИХ ТРАНСКРИПЦИЮ, ПОЛЬЗУЯСЬ АНГЛО-РУССКИМ СЛОВАРЕМ, И ВЫУЧИТЕ ИХ.
  4. I. Письменно переведите текст на русский язык. Выпишите 20 слов на экономическую тему с транскрипцией и переводом. Выучите эти слова наизусть.
  5. I. Письменно переведите текст на русский язык. Выпишите 20 слов на экономическую тему с транскрипцией и переводом. Выучите эти слова наизусть.
  6. II. Работа со словами, обозначающими предметы и действия.
  7. II. Работа со словами, обозначающими признак предмета.

Полиморфизм предоставляет подклассу способ определения собственной версии метода, определенного в его базовом классе, с использованием процесса, который называется переопределением метода (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| Абстрактные классы

mybiblioteka.su - 2015-2024 год. (0.005 сек.)