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

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



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

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

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

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

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



Интерфейс:

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

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

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

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