Em que casos não usar herança?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Em que casos não usar herança?
Olá, Marcelo, como vai?
A decisão de não usar herança deve ser considerada em situações onde a relação entre as classes não se encaixa no conceito de "é um tipo de". A herança é ideal para modelar especializações de um tipo geral, como no exemplo: uma ContaCorrente é um tipo de Conta.
No entanto, se a relação for de "tem um", ou seja, uma classe é composta por outra, o mais adequado é utilizar a Composição em vez da herança. A Composição favorece a flexibilidade e ajuda a evitar hierarquias de classes rígidas e profundas, que podem se tornar complexas e difíceis de manter. Ela permite que as funcionalidades sejam combinadas de forma mais dinâmica.
Por exemplo:
Se você tem uma classe Carro e uma classe Motor, um carro tem um motor, mas não é um tipo de motor. Nesse caso, a classe Carro deve conter uma instância de Motor como um de seus atributos, em vez de herdar da classe Motor.
class Motor {
void ligar() {
// lógica para ligar
}
}
class Carro {
// Carro TEM UM Motor
final Motor _motor = Motor();
void iniciarViagem() {
_motor.ligar();
// lógica do carro
}
}
Em resumo, prefira Composição quando a funcionalidade puder ser construída pela combinação de objetos existentes, e use Herança apenas quando houver uma relação clara e conceitual de especialização.
Espero ter ajudado.
Siga firme nos seus estudos e conte com o fórum sempre que precisar.
Abraços :)