Да, ваши ответы были технически правильными, но там, где вы поступили не так, не показывали их, вы понимаете, какие проблемы и недостатки вы выбираете друг за другом. Кроме того, они, вероятно, были обеспокоены / испугались совместимости своей кодовой базы с обновлениями в будущем. Этот тип ответа, возможно, помог (в дополнение к тому, что вы сказали):
«Выбор абстрактного класса над классом интерфейса зависит от того, что мы прогнозируем будущим кода.
Абстрактные классы обеспечивают лучшую совместимость вперед, потому что вы можете продолжить добавление поведения к абстрактному классу в будущее без нарушения существующего кода -> это невозможно с классом интерфейса.
С другой стороны, интерфейсные классы более гибкие, чем абстрактные классы. Это связано с тем, что они могут реализовать несколько интерфейсов . Дело в том, что Java не имеет множественных наследований, поэтому использование абстрактных классов не позволит вам использовать структура иерархии других классов ...
Итак, в конечном итоге хорошее общее правило: Предпочитаете использовать интерфейсные классы, если в вашей кодовой базе нет существующих / стандартных реализаций. И используйте абстрактные классы для сохранения совместимость, если вы знаете, что в будущем вы будете обновлять свой класс ».
blockquote>Удачи в следующем интервью!