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?