В одном из моих интервью меня попросили объяснить разницу между интерфейсом и абстрактным классом.
Здесь мой ответ:
Методы интерфейса Java неявно абстрактны и не может иметь реализации. Абстрактный класс Java может иметь которые реализуют поведение по умолчанию.
Переменные, объявленные в интерфейсе Java, по умолчанию являются окончательными. абстрактный класс может содержать не конечные переменные.
Члены интерфейса Java по умолчанию являются общедоступными. Резюме Java класс может иметь обычные вкусы членов класса, таких как частные, защищены и т.д.
Интерфейс Java должен быть реализован с использованием ключевого слова "инструменты"; Java-абстрактный класс должен быть расширен с использованием ключевого слова "extends".
Интерфейс может расширить только другой интерфейс Java, абстрактный класс может расширить другой класс Java и реализовать несколько интерфейсов Java.
Класс Java может реализовывать несколько интерфейсов, но он может расширяться только один абстрактный класс.
Однако интервьюер не был удовлетворен и сказал мне, что это описание представляет собой "книжное знание".
Он попросил меня более практичный ответ, объяснив, когда я выберу абстрактный класс по интерфейсу, используя практические примеры.
Где я ошибся?