POO: Herança versus Composição

← ← ←   08/06/2025, 12:14:01 | Postado por: Danilo Maia Florenzano


Como decidir

Usar herança quando precisar de:

Usar composição quando precisar de:

Usar uma interface quando precisar de:

Ou seja, a herança é bem vinda quando, e somente quando, as duas necessidades forem verdade. Do contrario, prefira sempre composição.

É importante ressaltar que a herança pode levar a um acoplamento mais forte entre as classes, o que pode dificultar a manutenção e evolução do código. A composição, por outro lado, promove um acoplamento mais fraco, permitindo maior flexibilidade e reutilização de componentes. Por isso, muitos autores recomendam a composição como uma abordagem preferencial na Programação Orientada a Objetos.

Exemplo

No exemplo da imagem, a herança não é justificada porque nenhuma das classes herdeiras sobrescreve o método da classe principal (polimorfismo), apenas é reaproveitado o Metodo1() (reaproveitamento de código). Nesse caso, como apenas um dos requisitos é preenchido, é melhor usar composição.

composicao

Há também a abordagem de não usar herança mesmo em casos que preencham os dois requisitos. Pois ambos podem ser satisfeitos através da combinação de interfaces e composição.

composicao com interface

Referência

Only Use Inheritance If You Want Both of These - by Christopher Okhravi