Зачем нужны перегрузка, переопределение и перекрытие методов; в чём различие механизмов вызова?

Перегрузка выбирает метод по аргументам, переопределение override — виртуальную реализацию по фактическому типу объекта, скрытие new — член, доступный через статический тип ссылки.

Короткий ответ

Что ответить на собеседовании

Перегрузка выбирает метод по аргументам, переопределение override — виртуальную реализацию по фактическому типу объекта, скрытие new — член, доступный через статический тип ссылки.

Подробный разбор

Ответ с пояснениями

Перегрузка выбирает метод по аргументам, переопределение override — виртуальную реализацию по фактическому типу объекта, скрытие new — член, доступный через статический тип ссылки.

Перегрузки имеют одно имя, но разные параметры; обычно выбор происходит на этапе компиляции. Override сохраняет контракт virtual/abstract-метода и участвует в runtime-диспетчеризации.

New явно скрывает унаследованный член, не заменяя его виртуальную реализацию. Поэтому при обращении через базовый тип можно получить поведение базы. Dynamic вносит дополнительные правила позднего выбора, но не отменяет различия механизмов. Одного отличающегося возвращаемого типа недостаточно для перегрузки.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее