Абстрактный класс или интерфейс?
Коротко: Абстрактный класс — недостроенный чертёж с общим состоянием и кодом. Интерфейс — чистый контракт: он говорит, что класс должен уметь, а не как.
Подробнее: Ни тот, ни другой нельзя создать напрямую. Класс наследуется максимум от одного абстрактного класса, но может реализовывать много интерфейсов. Современные интерфейсы могут содержать методы по умолчанию, но не состояние объекта.
Подробности
| Признак | Абстрактный класс | Интерфейс | |---|
См. также: абстракция, наследование