Вопросы к Поиску с Алисой
Принципиальная разница между абстрактным классом и интерфейсом в проектировании архитектуры приложений заключается в их функциях и области применения. metanit.com skillbox.ru
Абстрактный класс используется, когда нужно определить общий функционал для родственных объектов, спроектировать большую функциональную единицу с большим количеством базового функционала или когда все производные классы на всех уровнях наследования должны иметь общую реализацию. metanit.com Как правило, абстрактные классы фокусируются на общем состоянии классов-наследников. metanit.com
Интерфейс применяют, когда нужно определить функционал для группы разрозненных объектов, которые могут быть никак не связаны между собой, или когда проектируют небольшой функциональный тип. metanit.com Интерфейсы строятся вокруг какого-либо общего действия. metanit.com
Ещё несколько отличий:
Таким образом, если классы относятся к единой системе классификации, то выбирают абстрактный класс, иначе — интерфейс. metanit.com