Перегрузка выбирает метод по аргументам, переопределение override — виртуальную реализацию по фактическому типу объекта, скрытие new — член, доступный через статический тип ссылки.
Зачем нужны перегрузка, переопределение и перекрытие методов; в чём различие механизмов вызова?
Перегрузка выбирает метод по аргументам, переопределение override — виртуальную реализацию по фактическому типу объекта, скрытие new — член, доступный через статический тип ссылки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Перегрузка выбирает метод по аргументам, переопределение override — виртуальную реализацию по фактическому типу объекта, скрытие new — член, доступный через статический тип ссылки.
Перегрузки имеют одно имя, но разные параметры; обычно выбор происходит на этапе компиляции. Override сохраняет контракт virtual/abstract-метода и участвует в runtime-диспетчеризации.
New явно скрывает унаследованный член, не заменяя его виртуальную реализацию. Поэтому при обращении через базовый тип можно получить поведение базы. Dynamic вносит дополнительные правила позднего выбора, но не отменяет различия механизмов. Одного отличающегося возвращаемого типа недостаточно для перегрузки.