ВУЗ:
Составители:
Рубрика:
91
перегрузка метода – возникает, когда имя создаваемого метода
совпадет с именем метода базового класса, их сигнатуры отлича-
ется; в этом случае в производном классе будет несколько пере-
груженных методов с одним именем, а вызов нужного метода бу-
дет определяться обычными правилами перегрузки методов;
скрытие метода – возникает, когда имя и сигнатура создаваемо-
го метода совпадает с именем и сигнатурой наследуемых методов,
которые не имеют модификатор virtual или abstract; в этом
случае новый метод производного класса скрывает метод базово-
го класса и при вызове метода с такой сигнатурой предпочтение
будет отдаваться методу производного класса, а метод базового
класса будет скрыт; но это не значит, что он становится недоступ-
ным; скрытый метод базового класса всегда может быть вызван,
если при вызове имя метода уточнить ключевым словом base.
замещение метода – возникает, когда имя и сигнатура создавае-
мого метода производного класса совпадает с именем и сигнату-
рой метода базового класса, который имеют модификатор vir-
tual или abstract; чтобы новый метод производного класса пе-
реопределял метод базового класса, у него должен быть описан
модификатор override; в этом случае при обращении к объекту
производного класса с помощью ссылок базового типа всегда бу-
дет вызываться данный метод.
Метод производного класса, скрывающий метод базового класса,
следует сопровождать модификатором new, указывающим на новый ме-
тод. Если этот модификатор опущен, но из контекста ясно, что речь
идет о новом методе, то выдается предупреждающее сообщение при
компиляции проекта. Например, если базовый класс имеет в своем со-
ставе метод View(), то для описания в производном классе метода с та-
ким же именем и сигнатурой, который скрывает метод базового класса
нужно использовать модификатор метода new:
new public void View(){
base.View();
Console.WriteLine("Вывод результата");
}
Если не писать модификатор new, то он добавится по умолчанию
с выдачей предупреждающего сообщения о скрытии метода базового
класса.
Для пояснения разницы между скрытыми и замещенными мето-
дами производного класса рассмотрим пример. Опишем базовый класс
A с двумя методами, один из которых имеет модификатор virtual:
Страницы
- « первая
- ‹ предыдущая
- …
- 89
- 90
- 91
- 92
- 93
- …
- следующая ›
- последняя »