TestKiller Dúvida Questão 19  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
deyvid
JavaChild
[Avatar]

Membro desde: 11/08/2006 19:34:07
Mensagens: 120
Offline



Letra B??? Alguém pode med dar um forcinha? Desde já agradeço

This message was edited 2 times. Last update was at 24/02/2010 02:04:43

[MSN]
fuz1leiro
What is classpath?

Membro desde: 24/02/2010 02:37:07
Mensagens: 7
Offline

kra.. seguinte..

quando ele chama ((TestA)new TestB()).start() ele está chamando o método start da classe TestB..

mas como assim?

seguinte.. TestB subscreve o método start da classe TestA, então
quando temos um novo objeto de TestB, a versão subscrita é chamada.
zoren
GUJ Master
[Avatar]

Membro desde: 30/06/2008 08:32:33
Mensagens: 1003
Offline

Ele criou uma instância da classe B e fez o cast da mesma para a ClasseA e invocou o método start que a classeB sobrescrevia

Note que isso só é possivel pois a classeB herda da CLasse A, vc pode tentar declarar métodos diferentes am ambas as classes pra ver como funciona

Se vc cria um objeto da classeA e instância como a classeB, esse objeto da classeA terá todas as caracteristicas da classeB, mas só os métodos que a classe A possui

os que não tem na classe A serão perdidos

[Email] [MSN]
rmalati
Virtual Machine Man
[Avatar]

Membro desde: 26/11/2007 09:10:30
Mensagens: 592
Localização: Jundiaí-SP
Offline

Isso é uma chamada polimórfica.

Usando uma variável de referência Pai(TestA) para um objeto Filho(TestB).

Como a classe filha TestB sobrescreveu o método herdado start() este será selecionado.

No tempo de execução o método será selecionado dinâmicamente baseado no tipo real do objeto, ou seja, o que foi criado após new.

Espero ter ajudado.

Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%

"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)"
[Email] [MSN]
robinsonbsilva
Virtual Machine Man
[Avatar]

Membro desde: 27/10/2004 12:01:50
Mensagens: 736
Offline

Bom dia Jovens,

Só para reforçar, "leve em consideração o objeto criado", que no nosso caso é .
Esse exercício confunde devido ao "cast" (TestA), mas "sempre tenha em mente que o que vale é o "objeto criado".

This message was edited 1 time. Last update was at 24/02/2010 09:25:05


Sun Certified Java Programmer Standard Edition 6.0
[MSN]
deyvid
JavaChild
[Avatar]

Membro desde: 11/08/2006 19:34:07
Mensagens: 120
Offline

Mas gente boa, não tinha que rolando um "upCast" ??? para a class TestA e logo o método da classe A?

Um abração pra todos
[MSN]
zoren
GUJ Master
[Avatar]

Membro desde: 30/06/2008 08:32:33
Mensagens: 1003
Offline

Mesmo vc fazendo o cast, teve a implementação da classe B

É igual se vc fizesse



Vc só veria os métodos da ClassA, mas eles teriam a implementação da ClassB
[Email] [MSN]
deyvid
JavaChild
[Avatar]

Membro desde: 11/08/2006 19:34:07
Mensagens: 120
Offline

Pois é zoren , mas você esta se referindo ao "downcast" o que entendi. Mas o problema é parace que esta fazendo "upcast" e é essa minha dúvida.

Um abração pra vocÊ
[MSN]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team