Чем отличается интерфейс от абстрактного класса?


Чем отличается интерфейс от абстрактного класса? — один из самых распространенных вопросов на собеседованиях на должность разработчика. Его задача — проверить, насколько хорошо вы знакомы с объектно-ориентированным программированием (ООП). Давайте рассмотрим несколько отличительных черт.

1. Интерфейс не может содержать реализацию, в то время как абстрактный класс — может. Интерфейс лишь содержит чистое описание — «пустые» методы, которые вам необходимо реализовать в своем классе, имплементирующем интерфейс. В то же время абстрактный класс может иметь один или несколько методов с реализацией, которые вы можете использовать в своем классе-потомке.

2. Производный класс может наследовать только один абстрактный класс и «реализовать» множество различных интерфейсов.

3. Абстрактный класс может иметь свойства (поля) с различными модификаторами доступа, интерфейс — нет. Интерфейс может содержать только общедоступные константы (public final static)

4. Абстрактный класс мы наследуем (extends), интерфейс — «имплементируем» (implements).

5. При реализации интерфейса мы обязаны реализовать все его методы. Наследник абстрактного класса не обязан содержать реализацию абстрактных классов родителя.

6. В абстрактном классе можно описать конструктор, в интерфейсе — нет.





Случайные посты

Категория: Разное

Оставить комментарий