/* В многоуровневой иерархии классов выполняется тот переопределенный вариант виртуального метода, который обнаруживается первым при продвижении вверх по иерархии. */

using System;

class Base {

// Создать виртуальный метод в базовом классе, public virtual void Who()    {

Console.WriteLine("Метод Who() в классе Base");

}

}

class Derivedl : Base {

// Переопределить метод Who() в производном классе. public override void Who() {

Console.WriteLine("Метод Who() в классе Derivedl");

}

}

class Derived2 : Derivedl {

// В этом классе метод Who() не переопределяется.

}

class Derived3 : Derived2 {

//Ив этом классе метод Who() не переопределяется.

}

class No0verrideDemo2 { static void Main() {

Derived3 dOb = new Derived3();

Base baseRef; // ссылка на базовый класс

baseRef = dOb;

baseRef.Who(); // вызов метода Who() из класса Derivedl

}

}

Вот к какому результату приводит выполнение этого кода.

Метод Who() в классе Derivedl

В данном примере классDerived3наследует классDerived2,который наследует классDerivedl,а тот, в свою очередь, — классBase.Как показывает приведенный выше результат, выполняется методWho (), переопределяемый в классеDerivedl,поскольку это первый вариант виртуального метода, обнаруживаемый при продвижении вверх по иерархии от классовDerived3иDerived2,где методWho() не переопределяется, к классуDerivedl.

И еще одно замечание: свойства также подлежат модификации ключевым словомvirtualи переопределению ключевым словомoverride.Это же относится и к индексаторам.

Что дает переопределение методов

Благодаря переопределению методов в C# поддерживается динамический полиморфизм. В объектно-ориентированном программировании полиморфизм играет очень важную роль, потому что он позволяет определить в общем классе методы, которые становятся общими для всех производных от него классов, а в производных классах — определить конкретную реализацию некоторых или же всех этих методов. Переопределение методов — это еще один способ воплотить в C# главный принцип полиморфизма: один интерфейс — множество методов.

Перейти на страницу:

Похожие книги