Membro desde: 02/09/2007 18:53:15
Mensagens: 112
Offline
Mais um exemplo...
Preste atenção no tipo de retorno na assinatura do método testar nas classes A e B, o tipo de retorno declarado do método da classe B é um subtipo do tipo de retorno declarado do método da classe A (class B extends A). Se quiser copie o código e execute-o, veja o resultado e depois se quiser modifique-o e faça seus próprios testes.
Membro desde: 05/07/2005 18:12:25
Mensagens: 590
Localização: SP - São Paulo
Offline
No método raca(); é esperado a classe pai mas retorno o filho!
Seria o mesmo que: B b = new A();
Primeiro pensamento POG Existe casos e casos! Segundo pensamento POG Do meu jeito é mais fácil e rápido! Primeira merda POG Fazer as merdas que muitos fizeram por defender o primeiro pensamento POG. Segunda merda POG Limitar o projeto ao escopo inicial. Terceira merda POG Se basear em absurdos para defender seu desenvolvimento. Quarta merda POG Não entender que padrão é beneficio e usar o primeiro pensamento POG. Quinta merda POG Achar um absurdo eu escrever isso.
Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline
anderson isso é retorno covariante sim... se você tiver uma superClasse A que tenha um metodo e um subclasse B, com um metodo subscrito dessa maneira...
O retorno covariante diz que aceita qualquer sub tipo do metodo original da superClass
Membro desde: 30/07/2007 22:43:05
Mensagens: 1151
Offline
Isso não compila:
Mais isso compila:
Isso não trata de retorno covariante e sim de sobrescrição inválida. Quando vc muda o tipo vc está quebrando as regras da subscrição que diz q o metodo tem permanecer o mesmo e o tipo de retorno tem que ser mais publico que neste caso não tem como ser mais publico já que public é o mais publico de todos.
1.public
2.protected
3.default
4.private
This message was edited 1 time. Last update was at 21/12/2007 14:25:53