Importante

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!

1
resposta

Sobre o exemplo Herança x Composição

Professor, no exemplo citado ao substituir a herança pela composição abrimos mão também do polimorfismo, não? Se eu quiser fazer um somatório de saldos de todas as contas vou ter que rodar dois loops. Seria arriscado se eu - sem abandonar o princípio de Liskov - criasse uma classe Conta e fizesse ContaComum e ContaEstudante herdarem dela apenas os métodos em comum? Desta forma o método rende() estaria apenas no filho ContaComum e não no pai Conta, o que evitaria o problema apontado originalmente.

1 resposta

Oi Paulo, realmente usando composição inicialmente perdemos o polimorfismo. Mas uma forma de resolver isso é criar uma interface que obriga os métodos comuns e todo mundo implementa ela então no lugar de criar a classe Conta você criaria a interface Conta.

Espero ter ajudado, Abraços e bons estudos.