| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2012 09:47:18
|
rafaspimenta
HelloWorld
Membro desde: 21/07/2011 18:22:16
Mensagens: 11
Offline
|
Bom dia Colegas,
Tenho duas classe: ClassePai e ClasseFilha herdando de ClassePai.
Gostaria de saber se existe diferença entre:
1. Declarar um objeto do tipo ClassePai e instancia-lo com a ClasseFilha.
2. Declarar um objeto como sendo da classeFilha e instancia-lo como ClasseFilha.
Obrigado,
This message was edited 1 time. Last update was at 05/02/2012 09:48:30
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2012 09:58:00
|
ironmarq
Debugger
![[Avatar]](/images/avatar/e17233dc1c4e3457d5a259c06c7eb502.jpg)
Membro desde: 25/07/2011 20:43:02
Mensagens: 64
Localização: Campinas/SP
Offline
|
Bom dia rafaspimenta,
1. Declarar um objeto do tipo ClassePai e instancia-lo com a ClasseFilha.
Se ClasseFilha estender ClassePai, sem problemas
2. Declarar um objeto como sendo da classeFilha e instancia-lo como ClasseFilha.
Neste caso sim, mas acho que vc quis dizer se criar uma referência da classe filha e instanciá-la como pai, não é isso? Se sim, o compilador deixa passar, pois observa na árvore de hierarquias e vê que possue uma descendência, PORÉM, terá um erro em tempo de execução, será lançada uma exceção ClassCastException ...
|
Marcos P Alves
" Simple Man "
------------------------------ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2012 11:02:44
|
rmendes08
GUJ Master
![[Avatar]](/images/avatar/9ee855f3ce4dd40182183463232e2162.jpg)
Membro desde: 29/05/2008 14:09:28
Mensagens: 1617
Online
|
Na prática, faz toda a diferença na maneira que você usa o objeto. Por exemplo:
o que o exemplo mostra é que você pode referenciar um objeto da classe filha por uma variavel do tipo pai, porém, você só consegue executar os métodos da classe pai nesse caso.
|
"A Técnica é transformada em Arte por quem a emprega"
"O futuro pertence àqueles que acreditam na beleza de seus sonhos"
Computadores Fazem Arte
http://www.uaijug.com.br
"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2012 11:14:47
|
Vingdel
JavaEvangelist
![[Avatar]](/images/avatar/8e3a470dfb7d426c470e8e9bdf44df13.jpg)
Membro desde: 19/11/2006 22:09:57
Mensagens: 358
Localização: Cabo Frio - RJ
Offline
|
Olá, rmendes08!
Isso eu tenho que entender também, então não tem diferença entre esse dois caso?
Mas e se, no primeiro caso, o construtor da classe Filha (afinal ele é o responsável pela no instância), por acaso, fizer uso de um método da classe Filha, vai dar PAAAAAAUUUU?
Abraço!
This message was edited 1 time. Last update was at 05/02/2012 11:15:57
|
Caso tua dúvida esteja sanada edite tua primeira postagem no tópico e adicione [RESOLVIDO] ao assunto.
Poste teu código entre as tags [code] ... [/code].



 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2012 09:27:30
|
rafaspimenta
HelloWorld
Membro desde: 21/07/2011 18:22:16
Mensagens: 11
Offline
|
ironmarq wrote:...acho que vc quis dizer se criar uma referência da classe filha e instanciá-la como pai, não é isso?
Se eu tentar criar uma ref. da classe Filha e instancia-la como Pai, dá o seguinte erro:
acho que para fazer isso teria que ser através de cast.
Continuando, fiz os seguinte teste:
Bom, sinceramente n entendi pq o compilador levantou essa excessão.
Achava que por ter instanciado meu objeto pf como Filha, teria acesso a todos métodos da mesma. Alguém pode me explicar?
This message was edited 1 time. Last update was at 06/02/2012 09:29:40
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2012 11:26:21
|
rmendes08
GUJ Master
![[Avatar]](/images/avatar/9ee855f3ce4dd40182183463232e2162.jpg)
Membro desde: 29/05/2008 14:09:28
Mensagens: 1617
Online
|
Vingdel wrote:Olá, rmendes08!
Isso eu tenho que entender também, então não tem diferença entre esse dois caso?
Mas e se, no primeiro caso, o construtor da classe Filha (afinal ele é o responsável pela no instância), por acaso, fizer uso de um método da classe Filha, vai dar PAAAAAAUUUU?
Abraço!
Não, vai funcionar perfeitamente porque o construtor da classe pode acessar qualquer método/membro da classe, seja ele static ou não.
|
"A Técnica é transformada em Arte por quem a emprega"
"O futuro pertence àqueles que acreditam na beleza de seus sonhos"
Computadores Fazem Arte
http://www.uaijug.com.br
"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2012 11:31:15
|
rmendes08
GUJ Master
![[Avatar]](/images/avatar/9ee855f3ce4dd40182183463232e2162.jpg)
Membro desde: 29/05/2008 14:09:28
Mensagens: 1617
Online
|
rafaspimenta wrote:
ironmarq wrote:...acho que vc quis dizer se criar uma referência da classe filha e instanciá-la como pai, não é isso?
Se eu tentar criar uma ref. da classe Filha e instancia-la como Pai, dá o seguinte erro:
acho que para fazer isso teria que ser através de cast.
Continuando, fiz os seguinte teste:
Bom, sinceramente n entendi pq o compilador levantou essa excessão.
Achava que por ter instanciado meu objeto pf como Filha, teria acesso a todos métodos da mesma. Alguém pode me explicar?
Não. O que define o acesso a um método/membro é o tipo da variável, e não o tipo da instância. O tipo da instância por sua vez define a implementação do método que será invocada. À primeira vista isso é uma limitação, mas na prática, aí é que está a mágica do polimorfismo. O fato de você acessar os método de um objeto pelo tipo da variável e não pela implementação permite que você escreva métodos em termos de um contrato de interface sem antes mesmo ter uma classe que a implementa. Um exemplo prático é o JDBC. Praticamente, tudo no JDBC são interfaces e você as usa em termos genéricos. Assim, você pode escrever um programa todo que usa acesso a dados sem se preocupar com as peculiaridades de cada um.
|
"A Técnica é transformada em Arte por quem a emprega"
"O futuro pertence àqueles que acreditam na beleza de seus sonhos"
Computadores Fazem Arte
http://www.uaijug.com.br
"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados." |
|
|
 |
|
|