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

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

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 : Base {

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

}

class NoOverrideDemo { static void Main() {

Base baseOb = new Base();

Derivedl dObl = new Derivedl();

Derived2 d0b2 = new Derived2();

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

baseRef = baseOb; baseRef.Who();

baseRef = dObl ; baseRef.Who() ;

baseRef = d0b2;

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

}

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

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

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

В данном примере метод Who () не переопределяется в классе Derived2. Поэтому для объекта класса Derived2 вызывается метод Who () из класса Base.

Если при наличии многоуровневой иерархии виртуальный метод не переопределяется в производном классе, то выполняется ближайший его вариант, обнаруживаемый вверх по иерархии, как в приведенном ниже примере.

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

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 {

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ОБРАНЕ

0

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

Отметить Добавить цитату