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

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

Полиморфизм обеспечивает подклассам возможность задать собственную реализацию методов, определенных базовым классом. Чтобы соответствующим образом изменить наш проект, мы должны рассмотреть применение ключевых слов C# virtual и override. Если в базовом классе нужно определить метод, допускающий переопределение подклассом, то этот метод должен быть виртуальным.

public class Employee {

 // GiveBonus() имеет реализацию, заданную по умолчанию,

 // но дочерние классы могут переопределить это поведение.

 public virtual void GiveBonus(float amount) {currPay += amount;}

 …

}

Чтобы в подклассе переопределить виртуальный метод, используется ключевое слово override. Например, SalesPerson и Manager могут переопределить GiveBonus() так, как показано ниже (мы предполагаем, что PTSalesPerson переопределяет GiveBonus() примерно так же, как SalesPerson),

public class SalesPerson: Employee {

 // Премия продавца зависит от числа продаж.

 public override void GiveBonus(float amount) {

  int salesBonus = 0;

  if (numberOfSales ›= 0 && numberOfSales ‹= 100) salesBonus = 10;

  else

   if (numberOfSales ›= 101&& numberOfSales ‹= 200) salesBonus = 15;

   else salesBonus = 20; // Вcе, что больше 200.

  base.GiveBonus(amount * salesBonus);

}

}

public class Manager: Employee {

 // Менеджер в дополнение к денежному вознаграждению

 // получает некоторое число опционов.

public override void GiveBonus(float amount) {

  // Прибавка к зарплате.

  base.GiveBonus(amount);

  // И получение опционов…

  Random r = new Random();

  numberOfOptions += (ulong)r.Next(500);

 }

 …

}

Обратите внимание на то, что переопределенный метод будет использовать поведение, принятое по умолчанию, если указать ключевое слово base. При этом нет необходимости снова реализовывать логику GiveBonus(), а можно снова использовать (и, возможно, расширить) поведение родительского класса, принятое по умолчанию.

Также предположим, что Employee.DisplayStats() был объявлен виртуально и переопределен каждым подклассом, чтобы учесть число продаж (для продавцов) и текущее состояние опционов (для менеджеров). Теперь, когда каждый подкласс может по-своему интерпретировать виртуальные методы, каждый экземпляр объекта ведет себя более независимо.

static void Main (string[] args) {

 // Лучшая система премиальных!

 Manager chucky = new Manager("Chucky", 50, 92, 100000, "333-23-2322", 9000);

 chucky.GiveBonus(300);

 chucky.DisplayStats();

 SalesPerson fran = new SalesPerson("Fran", 43, 93, 3000, "932-32-3232", 31);

 fran.GiveBonus(200);

 fran.DisplayStats();

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.3 Ключевые Слова

Из книги C++ автора Хилл Мюррей

2.3 Ключевые Слова Следующие идентификаторы зарезервированы для использовния в качестве ключевых слов и не могут использоваться иным образом:asm auto break case char class const continue default delete do double else enum extern float for friend goto if inline int long new operator overload public register return short sizeof static struct switch this typedef union unsigned


11. Идентификатор. Ключевые слова

Из книги Программирование автора Козлова Ирина Сергеевна

11. Идентификатор. Ключевые слова Идентификатором называется последовательность цифр, букв и специальных символов. При этом первой стоит буква или специальный символ. Для получения идентификаторов можно использовать строчные или прописные буквы латинского алфавита.


Ключевые слова C#, предназначенные для более сложных конструкций

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Ключевые слова C#, предназначенные для более сложных конструкций В завершение главы мы рассмотрим ряд ключевых слов C#, применение которых требует от разработчика несколько большего опыта в программировании:• checked/unchecked;• unsafe/stackalloc/fixed/sizeof.Сначала мы выясним, как с помощью


Ключевые слова – начало пути

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

Ключевые слова – начало пути Наша сотрудница Мелисса как раз пыталась выйти на след, когда вводила в поисковой системе ключевые слова «Снять квартиру в Монреале».Этой фразой она выразила свое намерение, то есть обозначила след, который пыталась найти. Внимание Мелиссы


1.2.1. Ключевые слова и идентификаторы

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

1.2.1. Ключевые слова и идентификаторы Ключевые (или зарезервированные) слова в Ruby обычно не применяются ни для каких иных целей. Вот их полный перечень:BEGIN  END   alias  and    beginbreak  case  class  def    defined?do     else  elsif  end    ensurefalse  for   if     in     modulenext   nil   not    or     redorescue retry


5.2.3. Альтернативные расширенные ключевые слова

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

5.2.3. Альтернативные расширенные ключевые слова В gcc у каждого расширенного ключевого слова (ключевые слова, не описанные стандартом ANSI/ISO) есть две версии: само ключевое слово и ключевое слово, окруженное с двух сторон двумя символами подчеркивания. Когда компилятор


Ключевые слова

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Ключевые слова Ключевые слова — это предопределенные идентификаторы, которые имеют специальное значение для компилятора языка Си. Их использование строго регламентировано. Имена объектов программы не могут совпадать с ключевыми словами.список ключевых


Ключевые слова

Из книги Fiction Book Designer 3.2. Руководство по созданию книг автора

Ключевые слова Список «key words» – это список ключевых слов, которые Book Designer использует для поиска названий глав в процессе автоматического форматирования книги. Вы можете добавить или исключить ключевые слова из списка при помощи кнопок, расположенных справа от


Ключевые слова

Из книги Как заработать на фотографии в Интернете автора Зьомко Ольга

Ключевые слова Количество допустимых ключевых слов на каждом сайте разное. Больше всего их на сайте Sutterstock.com. Здесь можно выбрать до 50 различных ключевых слов, подглядывая в русско-английский словарь. Как уже писалось выше, фотографии крайне часто получают отказ по


Ключевые слова

Из книги Язык Си - руководство для начинающих автора Прата Стивен

Ключевые слова О ключевых словах мы уже тоже рассказали достаточно много. Если у вас возникли проблемы, значит, это ваше боевое крещение или простая невнимательность. Частотность отказов, связанных с ключевыми словами, вообще трудно сравнить с чем-либо. Поэтому при


ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

ПРИЛОЖЕНИЕ Б. КЛЮЧЕВЫЕ СЛОВА ЯЗЫКА СИ Ключевые слова в языке являются словами, выражающими действия этого языка. Ключевые слова языка Си зарезервированы, т. е. вы не можете использовать их для других целей, таких как задание имени переменной. Ключевые слова выполнения


Ключевые слова

Из книги HTML, XHTML и CSS на 100% автора Квинт Игорь

Ключевые слова Новые ключевые слова могли быть использованы в базе данных, созданной в InterBase 4.x или 5.x, в качестве идентификаторов каких-либо объектов. Для перехода к диалекту 3 необходимо переименовать эти объекты, например YEAR -> YEAR 1 или YEAR->"year" (в 3-м диалекте ключевые


Новые ключевые слова

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Новые ключевые слова В Interbase 7 появились новые ключевые слова, связанные с вышеупомянутым типом BOOLEAN:BOOLEAN, TRUE, FALSE, UNKNOWNХочется отметить, что в предыдущей версии (6.5) были добавлены следующие ключевые слова:ROWS, TIES, PERCENTИх значение разъяснено в документации к InterBase


Ключевые слова

Из книги автора

Ключевые слова В CSS, как и в других языках программирования, есть ключевые слова. Помните, что в CSS они не должны заключаться в кавычки («…» или …). Так, например, red – это ключевое слово, а «red» – нет. Для большего понимания приведу еще примеры недопустимого написания:width:


Ключевые и зарезервированные слова

Из книги автора

Ключевые и зарезервированные слова К ключевым словам относятся предопределенные идентификаторы, которые образуют ядро языка JavaScript. Эти слова имеют особый смысл и выполняют определенные функции. Ключевые слова не могут использоваться для пользовательских


Идентификаторы и ключевые слова

Из книги автора

Идентификаторы и ключевые слова Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант. Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ