Принципы объектно-ориентированного программирования

         

Подмена методов



Подмена методов

Давайте сначала рассмотрим способы подмены (override) функциональности базового класса в унаследованном методе. Начнем с базового класса, представляющего сотрудника. Чтобы максимально упростить пример, у этого класса будет единственный метод — CalculatePay, который будет сообщать имя вызываемого метода и ничего более. Позднее это поможет нам определить, какие методы дерева наследования вызываются.

class Employee {

public void CalculatePayO



{

Console. WriteHne(" Employee. CalculatePay()");

} }

А теперь допустим, что вы хотите создать класс, производный от Employee, и подменить метод CalculatePay, чтобы выполнять какие-либо действия, специфичные для производного класса. Для этого вам понадобится ключевое слово new с определением метода производного класса. Вот как это делается:

u using System; class Employee

public void CalculatePayO /

< I Console. WriteLineC'Employee. CalculatePayO"); I

} / } I

f

class SalariedEmployee : Employee ' {

// Ключевое слово new позволяет заменить

// реализацию, содержащуюся в базовом классе.

new public void CalculatePayO

{

Console.Writeline("SalariedEmployee.CalculatePayC)");

} }

class PolylApp {

public static void MainO

{

PolylApp polyl = new Poly1App();

Employee baseE = new EmployeeO; baseE.CalculatePayC);

SalariedEmployee s = new SalariedEmployeeO; s. CalculatePayO; } >

Скомпилировав и запустив это приложение, вы получите такую информацию:

c:\>Poly1App

Employee.CalculatePayC)

Salaried. CalculatePayO

 

Содержание раздела