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