Eae galera, to estudando polimorfismo agora e fiquei com uma duvida. Vou usar o exemplo do livro.
Eu tenho uma superclasse Empregado (abstract) e as subclasses Chefe e Comissado (finais). Na classe de aplicativo declaro referencia a Empregado (empregado) e Chefe (chefe) mas so instancio chefe pq empregado é abstract.
Atribuo chefe a empregado, tem q fazer isso pra efetivar o polimorfismo. Sempre q eu chamo um metodo sobrescrito de empregado ele chama o de chefe pq java sabe q o objeto é chefe e nao empregado (vinculação dinamica).
Até aqui ta perfeito, mas no livro pede tb pra testar chamando o mesmo metodo atraves de chefe pra confirmar q o resultado é o mesmo. E é!
Então minha duvida é: qual a vantagem em ter todo o trabalho de fazer referencia a empregado e atribuir chefe a ele se eu podia chamar o metodo atraves de chefe direto?
…faça um vetor de Empregado, com 2 posições, em empregado[0] atribua uma referencia de Chefe, e em empregado[1] atribua uma referencia de Comissado… agora, chame esse método da interface Empregado nos 2 objetos… irão se comportar diferente, pq cada classe final tem uma implementação diferente desse método… sacou? vc pode trabalhar com objetos de tipos diferentes como se fossem de tipos iguais (na realidade são!, pois são tds Empregados!) …e isso é uma das coisas q mais me admirei qnd comecei a esturar OO com java…
H
hipersoftPJ
As interfaces de Java também constituem um mecanismo de polimorfismo. Elas fornecem uma herança múltipla de interface, mas não de implementação.
T
TomazLavieriPJ
Apenas complementando 1 pouco + … o que os colegas falaram ai…
Tente imaginar q vc tenha um soft de uma fabrica… imagine a variação de tipos de impregados que o sistema pode ter… (mas todos são empregados)
a certas coisas que eles tem em como… justamente por serem impregados…
coisas como número de matricula, setor… talvez algumas permições… e outras coisas +…
agora digamos que vc tenha algo que utilize-se de empregados… imagine vc fazendo… um método para cada tipo de impregado existente… e usando coisas que todos os empregados tem… quando ná verdade vc pode fazer… apenas 1… que utiliza algo como a todos os empregados…
isso serve para diversos outros casos…
além de te economizar código… vc quando escreve algo na classe empregado… ele não precisa ser reescrito em suas sub-classes… mas apenas complementados…
está é uma grande vantagem do OO …
D
Duende_MacabroPJ
Continuei estudando aqui e tem um exemplo mais ou menos como o matheus disse, entendi melhor agora, valeu.