logo
[ТП]Lektsii / Лекция 2 Полиморфизм и виртуальные методы

Скрытие членов базового класса с новыми членами

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

public class BaseClass

{

public void DoWork() { WorkField++; }

public int WorkField;

public int WorkProperty

{

get { return 0; }

}}

public class DerivedClass : BaseClass

{

public new void DoWork() { WorkField++; }

public new int WorkField;

public new int WorkProperty

{

get { return 0; }

}

}

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

C#

Копировать

DerivedClass B = new DerivedClass();

B.DoWork(); // Calls the new method.

BaseClass A = (BaseClass)B;

A.DoWork(); // Calls the old method.