Se a classe Pagamento implementar todas as funcionalidades de Movimentacao, ainda assim é melhor usar composição ao invés de herança? Quando seria melhor utilizar herança para reaproveitar o código?
Se a classe Pagamento implementar todas as funcionalidades de Movimentacao, ainda assim é melhor usar composição ao invés de herança? Quando seria melhor utilizar herança para reaproveitar o código?
Dificilmente queremos que nossa classe herde todos os comportamentos da classe mãe, pois perdemos o controle sobre como aquilo é executado.
Aqui tem um artigo debatendo isto: http://blog.caelum.com.br/como-nao-aprender-orientacao-a-objetos-heranca/
Não é questão de que dificilmente queremos que a classe herde todos os comportamentos da classe mãe, pois a herança é algo que a linguagem define, sendo assim se "ta ali" é pra ser usada. Agora o momento certo para a utilização da herança é quando ela respeita a regra do "é um" e também você tem a plena [b]certeza[/b] que quer que a sua classe filha herde todas as características e ações da classe pai, neste caso é aconselhado usar herança. Tem muita discussão a respeito, alguns dizem que não é bom usar e preferem sempre a composição e outros preferem usar.
Existe um conceito no JAVA chamado de Adapters. Eh bom dar uma pesquisada.
Pensa assim... Em geral podemos usar a herança quando faz sentido no mundo real e não pra reaproveitar código, o reaproveitamento acaba sendo uma consequência. mas como escreveu o Caio, o um lugar pra aprender mais é no link do blog da caelum