classes abstratas e melhores práticas de interfaces em java

Então você tem uma interface e uma classe abstrata que implementa um subconjunto dos métodos na interface. Você também tem algumas classes que herdam a classe abstrata e dão implementações dos métodos que a classe abstrata não oferece.

Então, qual é a melhor prática aqui? Estou falando de problemas como:

1) A classe abstrata deve implementar a interface ou suas classes filhas? Deve toda aula? Parece-me que apenas a classe abstrata deveria. Obviamente, todas as classes poderiam implementar a interface, mas isso parece redundante porque os filhos do resumo herdarão a interface porque estendem a classe abstrata.

2) Dado que a classe abstrata implementa partes da interface, ela também deve declarar métodos abstratos para os métodos que não implementa? Parece-me que isso está certo, mas de certa forma isso parece redundante porque os filhos do resumo precisarão implementar esses métodos para compilar.

Então, quais são seus argumentos para a melhor prática? A questão se resume a: temos uma interface que define o que queremos que algumas classes façam, temos um subconjunto dos métodos na interface que definem o comportamento comum e temos algumas maneiras diferentes de definir o comportamento não comum. Qual é a melhor maneira de descobrir isso?

questionAnswers(5)

yourAnswerToTheQuestion