Карточка Middle ООП в C# спрашивают часто обновлено

Чем new отличается от override

Вопрос

Чем модификатор new у метода отличается от override?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

override переопределяет виртуальный метод: вызов через ссылку базового типа попадёт в метод наследника. new скрывает метод базового класса: через ссылку базового типа вызовется базовая версия, через ссылку наследника новая. Без new при совпадении имени компилятор выдаёт предупреждение CS0108.

Ответ

override переопределяет виртуальный метод: вызов через ссылку базового типа попадёт в метод наследника. new скрывает метод базового класса: через ссылку базового типа вызовется базовая версия, через ссылку наследника новая. Без new при совпадении имени компилятор выдаёт предупреждение CS0108.

Разбор

Сокрытие через new почти всегда признак проблемы дизайна. Нормальный сценарий: базовый класс из чужой библиотеки добавил метод с тем же именем.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме