Hoje em dia existe uma tendência ao abandono da herança.
Muitos dizem que é melhor o uso de interfaces ao invés de herança.
Porém, eu estou acostumado a usar herança e a indéia de interfaces apresenta algumas dificuldades para mim.
Exemplo:
Imaginem uma interface ICarro.
Essa interface tem os métodos Acelerar e Freiar.
Até aí tudo bem. Esse é um dos exemplos clássicos que os especialistas gostam de mostrar.
Cada classe implementará essas rotinas de forma específica, pois uma BMW é diferente de um Fusca.
Mas, imaginem que eu preciso de um metodo QtdRodas, que retorne sempre o número 4.
(vamos simplificar e esquecer dos carros mais futuristas. consideremos que semrpe serão 4 rodas)
Se fosse herança de classes, eu simplesmente criaria esse método na super classe uma única vez.
As classes herdeiras herdariam esse método e o meu trabalho nesse sentido estaria pronto.
Mas como estou usando Interfaces, vou ser obrigado a codificar esse método em todas as classes que implementam a minha interface, todas com o mesmo resultado…
Isso parece improdutivo.
Existe alguma forma de melhorar isso sem o uso de herança ??