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.