#Вопрос_с_собеседования



Какая разница между абстрактным классом и интерфейсом?



Ответ:
Абстрактный класс:

абстрактные классы имеют дефолтный конструктор; он вызывается каждый раз, когда создается потомок этого абстрактного класса;

содержит как абстрактные методы, так и не абстрактные. По большому счету может и не содержать абстрактных методов, но все равно быть абстрактным классом;

класс, который наследуется от абстрактного, должен реализовать только абстрактные методы;

абстрактный класс может содержать Instance Variable.

Интерфейс:

не имеет никакого конструктора и не может быть инициализирован;

только абстрактные методы должны быть добавлены (не считая default methods);

классы, реализующие интерфейс, должны реализовать все методы (не считая default methods);

интерфейсы могут содержать только константы.