Абстрактный класс против интерфейса в Java

Мне задали вопрос, я хотел, чтобы мой ответ был рассмотрен здесь.

Q: В каком сценарии более целесообразно расширять абстрактный класс, а не реализовывать интерфейс (ы)?

A: Если мы используем шаблон шаблона дизайна шаблона.

Я прав ?

Мне жаль, если я не смог четко сформулировать вопрос.
Я знаю основную разницу между абстрактным классом и интерфейсом.

1) использовать абстрактный класс, когда требование таково, что нам необходимо реализовать одинаковую функциональность в каждом подклассе для конкретной операции (реализовать метод) и другую функциональность для некоторых других операций (только сигнатуры метода)

2) используйте интерфейс, если вам нужно, чтобы подпись была одинаковой (а реализация разной), чтобы вы могли соблюдать реализацию интерфейса

3) мы можем расширить максимум одного абстрактного класса, но можем реализовать более одного интерфейса

Reiterating the question: Существуют ли какие-либо другие сценарии, помимо упомянутых выше, где нам конкретно требуется использовать абстрактный класс (можно увидеть, что шаблонный шаблонный метод концептуально основан только на этом)?

Интерфейс против абстрактного класса

Выбор между этими двумя вещами действительно зависит от того, что вы хотите сделать, но, к счастью для нас, Эрих Гамма может помочь нам немного.

Как всегда есть компромисс, интерфейс дает вам свободу в отношении базового класса, абстрактный класс дает вамfreedom to add new methods later, & # X2013; Эрих Гамма

Выcan’t go and change an Interface without having to change a lot of other things в вашем коде, поэтому единственный способ избежать этого - создать совершенно новый интерфейс, что не всегда может быть полезным.

Abstract classes в первую очередь следует использовать для объектов, которые тесно связаны между собой.Interfaces лучше в обеспечении общей функциональности для несвязанных классов.

Ответы на вопрос(14)

Ваш ответ на вопрос