Ao definir um tipo abstrato frequentemente nos deparamos com um uma escolha entre interfaces e classes abstratas eu gostaria de saber a opinião de vocês a respeito, eu acho a utilização da classe abstrata mais vantajoso
apesar de algumas situações o uso de interfaces é melhor vou colocar algumas situações que eu estou presenciando com as duas formas:
O uso de interface é útil porque qualquer classe pode implementa-la mesmo se a classe se estender há uma superclasse completamente não-relacionada
eu acho essa uma grande vantagem de usar a interface, mas se a interface tiver uns 100 métodos…?? pode causar muito stress implementar todos,
uma classe abstrata não prescisa ser inteiramente abstrada também pode conter outros métodos não abstratos isso deve deixar o processo mais rápido, mas uma classe que extende a uma classe abstrada não pode extender a outra já com interface isso pode ser feito.
A GRANDE DESVANTAGEM EM USAR INTERFACES É:
Neste caso diz respeito a compatibilidade. Se definirmos uma interface com parte de uma API pública e mais tarde adicionar um novo método á interface quebrará todas as classe que implementam a versão anterior, imaginem um sistema que 100 classe implementam a mesma interface…
isso com certeza séria estressante! Contudo se você utilizar uma classe abstrata , poderá adicionar adicionar métodos não abstratos de forma segura sem modificar métodos que extendem á essa classe abstrata.
Contudo eu acho que a utilização de uma ou de outra vai muito do projeto
as duas tem suas vantagem e desvantagens, mais no contexto geral eu acho o uso de classes abstratas mais coerente.