Чем new отличается от override
Вопрос
Чем модификатор new у метода отличается от override?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Ответ
override переопределяет виртуальный метод: вызов через ссылку базового типа попадёт в метод наследника.
new скрывает метод базового класса: через ссылку базового типа вызовется базовая версия, через ссылку наследника новая.
Без new при совпадении имени компилятор выдаёт предупреждение CS0108.
Разбор
Сокрытие через new почти всегда признак проблемы дизайна. Нормальный сценарий: базовый класс из чужой библиотеки добавил метод с тем же именем.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Фигуры: полиморфная площадь
Следующий вопрос
new и override при вызове через базовый тип
Термины по теме
Ещё по теме «ООП в C#»
- Абстрактный класс или интерфейс
- protected internal и private protected
- Методы интерфейса по умолчанию
- Явная реализация интерфейса
- Банковские счета: инкапсуляция и инварианты
- Порядок инициализации при создании наследника
- Порядок статических и обычных конструкторов
- Статическое поле общее для всех объектов