Абстрактный класс нельзя создать напрямую. Он задаёт основу для наследников и может содержать как готовые методы и состояние, так и абстрактные члены без реализации.
Чем абстрактный класс отличается от обычного класса?
Абстрактный класс нельзя создать напрямую. Он задаёт основу для наследников и может содержать как готовые методы и состояние, так и абстрактные члены без реализации.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Абстрактный класс нельзя создать напрямую. Он задаёт основу для наследников и может содержать как готовые методы и состояние, так и абстрактные члены без реализации.
Конкретный наследник обязан реализовать абстрактные члены, иначе сам остаётся абстрактным. Обычный класс можно создавать, если доступен подходящий конструктор и нет других ограничений; он тоже может иметь virtual-методы.
У абстрактного класса бывают конструктор, поля и реализованные методы. Он не равен интерфейсу: общий базовый класс часто разделяет состояние и реализацию, тогда как интерфейс прежде всего задаёт контракт возможностей.