Dúvida Herança.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
rmalati
Virtual Machine Man
[Avatar]

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

Pessoal, o código abaixo



Bem a dúvida é a seguinte: Qual o motivo exatamente que a primeira referência não funciona?
Todo Gerente é um Funcionário, pois Gerente estende funcionário, então pq não compila?
Bateu uma grande dúvida agora.
Valeu.

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]
dreamspeaker
GUJ Ranger
[Avatar]

Membro desde: 22/04/2003 10:09:58
Mensagens: 752
Localização: SP - Capitar
Offline

Vc não pode converter um Funcionário pra Gerente. Um Gerente é um Funcionário (por isso a segunda associação funciona), mas nem todo Funcionário será um Gerente.

Nesse caso, vc precisa fazer um cast explicito.



This message was edited 1 time. Last update was at 28/02/2008 22:40:00


André Barbosa
Para de encher o saco e vai doar sangue!
twitter
[Email] [WWW]
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Isso funciona:



Agora, transformar um Funcionario (puro) em Gerente não rola. Vai gerar um ClassCastException.

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

Nem todo funcionário é um gerente, certo?
Portanto, um funcionário que não seja gerente (na vida real), não "cabe" no cargo.
Já, todo gerente é um funcionário. Então todo gerente "cabe" num funcionário.

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
rmalati
Virtual Machine Man
[Avatar]

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

dreamspeaker wrote:Vc não pode converter um Funcionário pra Gerente. Um Gerente é um Funcionário (por isso a segunda associação funciona), mas nem todo Funcionário será um Gerente.

Nesse caso, vc precisa fazer um cast explicito.





Agora ficou mais tranquilo.
Mas o que acontece quando se faz um cast explícito transformando um funcionário em gerente? É isso mesmo que eu entendi?
Obrigado.

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]
pardal_nb
Virtual Machine Man

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

Você está por sua conta e risco...

para fazer um cast desse tipo vc tem q ter a certeza que está fazendo a coisa certo...(vc tem q ter certeza de q AQUELE funcionario É UM Gerente)

por exemplo, vc está recuperando um objeto do banco de dados e vc SABE q esse objeto é um Funcionario, então vc pode fazer o cast, senao será lancada uma exceçao

This message was edited 1 time. Last update was at 29/02/2008 07:25:23

peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

Um cast é descoberto em tempo de compilação pois...





Perceba que eu posso ter um Funcionario que é um Gerente (Polimorfismo). Nesse caso eu posso fazer o cast "de volta". Agora um Funcionario "normal" não.

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
LPJava
GUJ Hacker

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

pense dessa forma.. nem todo funcionario é gerente.. mais um gerente ele é funcionario..

Entao qdo vc diz ali, é pq nem todo funciona é gerente, vc na empresa tem o pessoal serviço gerais, a secretaria, o analista etc.. e todos sao funcionarios...

Ja no outro que funciona vc diz.. olha meu gerente é um funcionario q claro que sim...

Agora se vc fizer uma pesquisa no mundo da ADM vai ver que funcionrio nao existe mais agora é Colaborador rs.

Um exemplo semelhante: carro, moto todos sao veiculos.. mais nem todo veiculo.. é um carro, uma moto por exemplo :d

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]
rmalati
Virtual Machine Man
[Avatar]

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

Nossa galera, agora eu entendi mesmo!
Muito obrigado a todos vocês pela grande aula que me deram.
OO é difícil no princípio, mas depois que começa a entender os conceitos até que fica divertido.
Abração.

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]
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

rmalati wrote:Nossa galera, agora eu entendi mesmo!
Muito obrigado a todos vocês pela grande aula que me deram.
OO é difícil no princípio, mas depois que começa a entender os conceitos até que fica divertido.
Abração.


Vc vai ter uma surpresa quando descobrir o Duck Typing do Ruby

http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
rmalati
Virtual Machine Man
[Avatar]

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

peczenyj wrote:
rmalati wrote:Nossa galera, agora eu entendi mesmo!
Muito obrigado a todos vocês pela grande aula que me deram.
OO é difícil no princípio, mas depois que começa a entender os conceitos até que fica divertido.
Abração.


Vc vai ter uma surpresa quando descobrir o Duck Typing do Ruby


Ah já ouvi dizer muito bem do Ruby, mas é demais pra minha cabeça, deixa eu aprender Java primeiro. hehheehe.
Valeu.

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]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team