Виртуальный метод имеет базовую реализацию, которую наследник может переопределить. Абстрактный метод не имеет тела и должен быть реализован конкретным наследником.
Чем виртуальный метод отличается от абстрактного?
Виртуальный метод имеет базовую реализацию, которую наследник может переопределить. Абстрактный метод не имеет тела и должен быть реализован конкретным наследником.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Виртуальный метод имеет базовую реализацию, которую наследник может переопределить. Абстрактный метод не имеет тела и должен быть реализован конкретным наследником.
Абстрактный метод объявляется в абстрактном классе. В обоих случаях вызов через базовую ссылку может использовать реализацию фактического типа объекта.
Virtual подходит, когда есть разумное поведение по умолчанию; abstract — когда база лишь задаёт обязательную операцию. Для переопределения используют override, а не new, которое скрывает член и имеет другую семантику.