Чем отличается интерфейс от абстрактного класса?
Чем отличается интерфейс от абстрактного класса? — один из самых распространенных вопросов на собеседованиях на должность разработчика. Его задача — проверить, насколько хорошо вы знакомы с объектно-ориентированным программированием (ООП). Давайте рассмотрим несколько отличительных черт.
1. Интерфейс не может содержать реализацию, в то время как абстрактный класс — может. Интерфейс лишь содержит чистое описание — «пустые» методы, которые вам необходимо реализовать в своем классе, имплементирующем интерфейс. В то же время абстрактный класс может иметь один или несколько методов с реализацией, которые вы можете использовать в своем классе-потомке.
2. Производный класс может наследовать только один абстрактный класс и «реализовать» множество различных интерфейсов.
3. Абстрактный класс может иметь свойства (поля) с различными модификаторами доступа, интерфейс — нет. Интерфейс может содержать только общедоступные константы (public final static)
4. Абстрактный класс мы наследуем (extends), интерфейс — «имплементируем» (implements).
5. При реализации интерфейса мы обязаны реализовать все его методы. Наследник абстрактного класса не обязан содержать реализацию абстрактных классов родителя.
6. В абстрактном классе можно описать конструктор, в интерфейсе — нет.
Категория: Разное