Duvida herança X interface

Galera gostaria de obter a ajuda de vocês em uma questão que o professor passou na faculdade. Então la vai…:blush:
Por que em Java, se deve priorizar o uso de
interfaces, ao invés de herança com classes?

Não existe uma resposta específica e na real esse conceito não se aplica só ao Java mas à orientação à objetos.

Interfaces são tipos abstratos de dados, definem o comportamento que um objeto deve implementar.
Se você modela seu sistema de forma a só depender das interfaces, a manutenção e testes se tornam mais simples, as interfaces fazem o sistema ter um acoplamento fraco.

Quando você usa herança, de cara você já tem um acoplamento forte da subclasse com sua classe base, o que pode ser um problema por exemplo quando você fizer alguma manutenção na classe base.

Neste link tem alguns artigos interessantes pra você ler: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

6 curtidas

Complementando o que o Staroski sabidamente disse, existe o problema da herança multipla. O Java não aceita isso, mas o python por exemplo aceita. Por isso você pode usar interface para contornar esse problema.

2 curtidas

Exatamente, em Java se resolve o problema de herança múltipla utilizando herança múltipla de interfaces e realizando a implementação através de composição de classes.
Num primeiro momento parece complicado, mas fica um código bastante robusto, reaproveitável e de fácil manutenção.

3 curtidas

Obrigada @staroski e @FearX pela ajuda.