Поиск

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

Давайте сначала рассмотрим способы подмены (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
O