Polimorfismo  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
spierPJ
JavaTeenager
[Avatar]

Membro desde: 14/11/2003 00:00:00
Mensagens: 193
Offline

Olá,



certificação não é um de meus objetivos (ainda), por isso não sei se esta mensagem está dentro dos objetivos deste fórum, mas achei a questão ( de um tópico do gd comp.lang.java, recomendo uma leitura diária das discussões) interessante:



Na instrução printIt(null), qual método printIt será executado, ou ocorre um erro?
Por que?

bob
[WWW] [ICQ]
DiegoDiSouzaPJ
Java Ninja
[Avatar]

Membro desde: 14/07/2004 00:00:00
Mensagens: 251
Offline

Eu acho que vai dar erro

pq qdo o main executar o printIt, ele não vai saber qual o tipo de argumento, portanto não saberá qual metodo chamar...
[WWW] [ICQ]
renan_danielPJ
GUJ Master
[Avatar]

Membro desde: 13/05/2003 00:00:00
Mensagens: 1146
Offline

Acho que erro não dá não...

Acho que ambos metodos são iguais, pq vc pode ter uma String, ou vc pode ter um Object de String...

Acho

Se tivesse apenas um método, qualquer um dos dois do código, ele imprimiria normal, agora entre os dois, eu não sei qual realmente ele imprime...

Flw
[WWW] aim icon [ICQ]
fabianoruyPJ
Thread.start()
[Avatar]

Membro desde: 05/09/2004 00:00:00
Mensagens: 28
Offline

Acho que imprime o primeiro ("String: null").
Não dá erro pq String é um Object e o compilador procura o mais específico (String).
Só acho que isso não é Polimorfismo, certo? É apenas sobrecarga de nomes!
T+
Fabiano B. Ruy
[WWW] aim icon [ICQ]
matheusPJ
GUJ Hacker
[Avatar]

Membro desde: 23/03/2003 00:00:00
Mensagens: 6928
Offline

acho q vai dar erro de runtime!

http://www.portaljava.com
[WWW] aim icon [ICQ]
renan_danielPJ
GUJ Master
[Avatar]

Membro desde: 13/05/2003 00:00:00
Mensagens: 1146
Offline

fabianoruy wrote:o compilador procura o mais específico (String).
Fabiano B. Ruy


Eu não sabia que ele procurava o mais específico, se ele procura o mais específico, ele vai imprimir "String:null".
[WWW] aim icon [ICQ]
fabianoruyPJ
Thread.start()
[Avatar]

Membro desde: 05/09/2004 00:00:00
Mensagens: 28
Offline

É, eu já havia caido nessa!
Se fossem duas classes de hierarquias diferentes (tipo String e Integer), daria erro de compilação!
O tal do compilador é bom mesmo!
T+
Fabiano B. Ruy
[WWW] aim icon [ICQ]
Rubem AzenhaPJ
GUJ Master
[Avatar]

Membro desde: 21/06/2004 00:00:00
Mensagens: 1657
Localização: 69627310
Offline

estranhom não sei pq ele imprime String: null...

http://www.portaljava.com
[WWW] aim icon [ICQ]
RafaelJPJ
JavaTeenager
[Avatar]

Membro desde: 07/03/2004 00:00:00
Mensagens: 155
Offline



Porque quando há métodos de nomes iguais, porém com atributos diferentes, em tempo de execução ele sempre assumirá o método mais específico, conforme foi dito.
É uma regra que eu acho meio sem sentido, facílimo de confudir-se e sem muito propósito.
[WWW] [ICQ]
spierPJ
JavaTeenager
[Avatar]

Membro desde: 14/11/2003 00:00:00
Mensagens: 193
Offline

fabianoruy wrote:Acho que imprime o primeiro ("String: null").
Não dá erro pq String é um Object e o compilador procura o mais específico (String).

Bingo

Só acho que isso não é Polimorfismo, certo?

Provavelmente! Coisa de rookie!

É apenas sobrecarga de nomes!

é isso mesmo?


A resposta:
There is a rule in the JLS about this. In the case of two or more
possible methods matching, the one that is selected is the one whose
parameter types most closely match the argument types in the method
call. In the case of the argument being null without a typecast, the
method with the most specific parameter types is selected.
In your code, String is more specific than Object, because String is a
subclass of Object. So therefore the compiler chooses printIt(String).
If you had two methods whose parameter types were equally specific,
for example printIt(String) and printIt(List), you would get a compiler
error. Likewise if you had two methods with two parameters, and neither
had both more specific than the other. For example printIt(Object,
String) and printIt(String, Object).

--
/-- Joona Palaste (palaste@cc.helsinki.fi) ------------- Finland --------\
\-- http://www.helsinki.fi/~palaste --------------------- rules! --------/
(http://groups.google.com/groups?selm=cimq6v%24dko%241%40oravannahka.helsinki.fi)
[WWW] [ICQ]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team