Covariant return types  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

Pessoal,

fazendo um simulado aqui me deparei com isso:

"Covariant return types allow the subclass method to return a subclass of the return type of the superclass method"

nao entendi mto bem...

alguem poderia dar exemplos?

This message was edited 1 time. Last update was at 20/12/2007 21:42:09

LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

retorna um tipo que filho da superclass.



Posso subscrever meu metodo com o tipo de retorno.. desde que ele passe no teste É-UM.

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
javadev
JavaChild

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.
anderson.bonavides
GUJ Master
[Avatar]

Membro desde: 30/07/2007 22:43:05
Mensagens: 1151
Offline

Saída:
método da superclasse
método da subclasse
método da subclasse


Eu pensei que retorno covariante tinha haver com isso:

public B testar(){ //retorno covariante
System.out.println("método da subclasse");
return new B();
}


Se isso não é retorno covariante o que seria?

Sun Certified Java Programmer 5.0
everson_z
Virtual Machine Man
[Avatar]

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.
[WWW]
Raff
Virtual Machine Man
[Avatar]

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


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline



Acha que isso é um retorno cavariante ???


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline

melhor dizendo acha que isso é uma subscrição válida ?


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline



Seria o mesmo que: B b = new A();




como assim amigo... isso daria erro não ? Supondo de A é superCLasse e B e SubClasse ?


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

Raff wrote:


Seria o mesmo que: B b = new A();




como assim amigo... isso daria erro não ? Supondo de A é superCLasse e B e SubClasse ?


dá erro sim...
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

everson_z wrote:No método raca(); é esperado a classe pai mas retorno o filho!

Seria o mesmo que: B b = new A();



caramba, cada um postando uma coisa...

isso seria a mesma coisa?!


ou TEM que manter o tipo de retorno como sendo da superclasse?

This message was edited 1 time. Last update was at 21/12/2007 10:05:44

anderson.bonavides
GUJ Master
[Avatar]

Membro desde: 30/07/2007 22:43:05
Mensagens: 1151
Offline

No meu entendimento isso seria só Polimofismo.



E isso seria retorno covariante.
public Dog comer(){
new Dog();
}

Sun Certified Java Programmer 5.0
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline

Eu tbm acho anderson !!!!!!!!!


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

tem certeza disso?

entao pq isso nao compila:


bom sabemos que short é um inteiro.. posso colocar um short dentro de um inteiro, e um inteiro dentro de um long mais pq isso nao funciona?

E outra retorno covariantes faz parte do polimorfismo...

flw!

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
anderson.bonavides
GUJ Master
[Avatar]

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


Sun Certified Java Programmer 5.0
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team