Абстрактный класс
Интерфейс
1. Абстракция
Абстракция — одна из самых мощных функций объектно-ориентированного программирования. Это способ предоставить пользователям только самую актуальную и важную информацию, скрывая остальную.
Абстрактные классы не обеспечивают полной абстракции — они могут иметь конкретные методы наряду с абстрактными .
Интерфейсы обеспечивают полную абстракцию ; однако у них не может быть конкретных методов.
2. Конструкторы
Конструктор — это специальный метод класса, используемый для инициализации объектов класса.
Абстрактные классы могут иметь разные типы конструкторов.
Интерфейсы не могут иметь конструкторов.
3. Множественное наследование
Наследование — это еще одна особенность объектно-ориентированного программирования, в которой конкретный класс может быть производным от базового класса. Множественное наследование позволяет расширять более одного базового класса в производном классе.
Абстрактные классы не поддерживают множественное наследование.
Интерфейсы поддерживают множественное наследование.