Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csOpIhHd 69 of 163 menu
◀ ▶

Сокрытие метода потомком в C#

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

Пока база не разрешает замену метода, компилятор смотрит на тип переменной, а не на то, какой объект в ней лежит. Переменная типа User вызовет Greet из User, даже если объект создан как Student. Чтобы явно показать сокрытие, перед методом потомка пишут new.

Запишем оба метода и сравним вызовы:

class User { public void Greet() { Console.WriteLine("user"); } } class Student : User { public new void Greet() { Console.WriteLine("student"); } }

Через переменную базы и через переменную потомка вывод разный:

Student student = new Student(); User link = student; link.Greet(); student.Greet();

Сделайте классы User и Employee с методом Role, который выводит разные строки. Сохраните объект Employee в переменной типа User и выведите, какая строка появится при вызове.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить