| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 08:40:14
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
Oi
Segue um link interessante explicando polimorfismo em Java.
Duas coisas importantes que eu concordo e que causam muita confusão
polimorfismo nada mais é do que a chamada do método sendo executada de formas diferentes, o que depende do objeto chamador
para termos polimorfismo não necessariamente precisamos de herança, podemos ter o mesmo comportamento usando interfaces
Sei que já foi muito batido esse assunto aqui, mas acho que quanto mais discussão melhor, o que acham?
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 08:44:16
|
adriano_si
JWizard
![[Avatar]](/images/avatar/4f9ef38edcfc460a00cbb8ed5dee299c.jpg)
Membro desde: 01/10/2006 15:29:40
Mensagens: 2047
Offline
|
A palavra Herança, foi o que me matou por muito tempo para entender Polimorfismo em Java... não sei se é a mais adequada para explicar o que conhecemos como "HERANÇA"... acho que poderiam arranjar outro conceito melhor... mas pelo jeito a JAVA "Herdou" isso do C++, hehehehe
Perfeito o Link pra quem quer ter uma visão inicial e clara do conceito...
Falows
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 08:53:40
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
não é a toa que a Katty vive repetindo no livro Head First
Java NÃO é C++
This message was edited 1 time. Last update was at 19/05/2009 08:54:05
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 08:57:11
|
adriano_si
JWizard
![[Avatar]](/images/avatar/4f9ef38edcfc460a00cbb8ed5dee299c.jpg)
Membro desde: 01/10/2006 15:29:40
Mensagens: 2047
Offline
|
hehehehe... pior...
O conceito de "herdar" pra mim, é bem diferente do que realmente ocorre quando nossa classe possui uma superclasse (ou seja, sempre)... mas como eu acho que não há uma palavra que defina o que realmente ocorre HERANÇA entrou por tabela...
Blz
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 09:03:50
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
não li o artigo.... então não sei bem o que ele quis dizer com
polimorfismo nada mais é do que a chamada do método sendo executada de formas diferentes, o que depende do objeto chamador
vou ler agora... mas c ele kiz dizer, que sobrecarga tem a ver com polimorfismo não esta correto... portanto o polimorfismo em se, não depende do objeto chamador, depende do objeto que esta sendo chamado.... ou seja.... vc tem um objeto, chama um método dele... e a depender da forma dentro do objeto, um comportamento diferente é executado....
vou ler, e depois entender o q ele kiz dizer e volto a falar
EDIT.: agora eu li, e realmente é muito bom o artigo, e totalmente coerente... mostra corretamente cada ponto... boa leitura a quem for ler
This message was edited 2 times. Last update was at 19/05/2009 09:22:43
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 09:23:24
|
Mak
Debugger
Membro desde: 22/10/2008 22:13:38
Mensagens: 68
Offline
|
para termos polimorfismo não necessariamente precisamos de herança, podemos ter o mesmo comportamento usando interfaces
Perfeito ... eu no início confundia mto polimorfismo com sobrecarga de métodos (na verdade até hj as vezes me enrolo um pko) ... Mas quando vi acho q em um livro qualquer um exemplo do q eles denominaram polimorfismo dinâmico (pra mim o verdadeiro polimorfismo) q necessitava do uso d interfaces, fiquei deslumbrado com o potencial do verdadeiro polimorfismo ... mto massa ... por essas e outras q OO é massa ... não q outros paradigmas não possam ser melhores ... mas não é a toa q OO está aí até hj ...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 09:29:36
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
oi
pois é, ao invés de
polimorfismo nada mais é do que a chamada do método sendo executada de formas diferentes, o que depende do objeto chamador
melhor
polimorfismo nada mais é do que a chamada do mesmo método sendo executada de formas diferentes, o que depende do tipo do objeto referenciado
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 09:32:45
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
André Fonseca wrote:
polimorfismo nada mais é do que a chamada do mesmo método sendo executada de formas diferentes, o que depende do tipo do objeto referenciado
com essa segunda frase fica bem + claro ^^
abraços
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 09:48:08
|
adriano_si
JWizard
![[Avatar]](/images/avatar/4f9ef38edcfc460a00cbb8ed5dee299c.jpg)
Membro desde: 01/10/2006 15:29:40
Mensagens: 2047
Offline
|
denominaram polimorfismo dinâmico
Nome mais bonitinho e enfeitado para POLIMORFISMO... não vejo um como estático, por isso, só polimorfismo já basta... hehehehe
Falows
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 10:14:00
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
eu so não concordo muito que o polimorfismo seja apenas na chamada do método... os tipos das variáveis em java tb são polimorficos, e é por isso que os métodos podem ser polimorficos, pois se não pudessomos passar varias formas para uma única variável tipada, não teriamos como chamar um método polimorficamente
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 12:50:37
|
leandronsp
Virtual Machine Man
![[Avatar]](/images/avatar/b0dfd1bbadca4092f9d14d7a74085df0.jpg)
Membro desde: 22/03/2008 22:24:29
Mensagens: 520
Localização: São Paulo
Offline
|
Acho que o polimorfismo é além de uma "chamada de método". É um grau de abstração perto de se imaginar oq é real: é o ato de um objeto tomar várias formas.
Essas várias formas são seus comportamentos em um determinado escopo. Esses comportamentos são por consequencia os metodos.
E Java, em tempo de compilação, "olha" para os tipos dos objetos. E executa o comportamento implementado nesses tipos.
Abraços pessoal, e nos vemos domingão no Falando em Java!
|
Blog | Github | About me! |
Contribua => Parser HTML
Compartilhe arquivos e ideias no ebaH! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 13:00:18
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
leandronsp wrote:Acho que o polimorfismo é além de uma "chamada de método". É um grau de abstração perto de se imaginar oq é real: é o ato de um objeto tomar várias formas.
Essas várias formas são seus comportamentos em um determinado escopo. Esses comportamentos são por consequencia os metodos.
E Java, em tempo de compilação, "olha" para os tipos dos objetos. E executa o comportamento implementado nesses tipos.
Abraços pessoal, e nos vemos domingão no Falando em Java!
so uma correção, ele executa o comportamento, e olha para o tipo em tempo de execução, e não de compilação... em tempo de compilação, ele apenas "tenta" (e quanto fala tenta, é pq ele não garante, por isso existe os CastClassException em tempo de execução) garantir que vc "não tente enfiar uma bicicleta onde deveria existir um espelho por exemplo".
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 13:03:13
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
a definição de polimorfismo, feita pela Monica Pawlan , que é criticada pelo professor, pode ser encontrada aqui, deve ter sido ela quem escreveu já que ela trabalha na SUN..
aqui temos uma outra definição
Polymorphism means "any forms." In object-oriented programming, it refers to the capability of objects to react differently to the same method. Polymorphism can be implemented in the Java language in the form of multiple methods having the same name. Java code uses a late-binding technique to support polymorphism; the method to be invoked is decided at runtime.
Segundo essa definição polimorfismo poderia ser implementado usando overload ou overriding - multiple methods having the same name
aqui tem outra definição, segundo a qual podemos ter tres tipos de implementação
overloading
overriding através de herança
overriding através de interface
e ainda aqui tem outra definição mais completa ainda, segundo a qual temos 4 tipos de implementalção, coerção, overloading, parametrica e inclusão, a parametrica acho que seria o que o Lavieri quis dizer
resumindo, a definição de polimorfismo é clara, agora parece que não chegaram ainda a um consenso na forma de implementa-la..
nada é tão simples como parece.. rs
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 13:04:57
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
Lavieri wrote:
leandronsp wrote:Acho que o polimorfismo é além de uma "chamada de método". É um grau de abstração perto de se imaginar oq é real: é o ato de um objeto tomar várias formas.
Essas várias formas são seus comportamentos em um determinado escopo. Esses comportamentos são por consequencia os metodos.
E Java, em tempo de compilação, "olha" para os tipos dos objetos. E executa o comportamento implementado nesses tipos.
Abraços pessoal, e nos vemos domingão no Falando em Java!
so uma correção, ele executa o comportamento, e olha para o tipo em tempo de execução, e não de compilação... em tempo de compilação, ele apenas "tenta" (e quanto fala tenta, é pq ele não garante, por isso existe os CastClassException em tempo de execução) garantir que vc "não tente enfiar uma bicicleta onde deveria existir um espelho por exemplo".
seria isso?
Java code uses a late-binding technique to support polymorphism; the method to be invoked is decided at runtime.
http://www.javabeat.net/javabeat/scjp5/tutorials/scjp-basics/13-polymorphism.php
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2009 16:22:48
|
Mak
Debugger
Membro desde: 22/10/2008 22:13:38
Mensagens: 68
Offline
|
Então eu sempre tive o seguinte:
Dada a Classe Soma a seguir:
tem-se a Classe Main
Neste caso eu teria sobrecarga de método no método soma, ou polimorfismo estático (o polimorfismo dá-se em tempo de compilação)
No seguinte exemplo, polimorfismo dinâmico (o polimorfismo dá-se em tempo de execução), com o uso de Interface
Basicamente é assim q eu entendo polimorfismo hj ... seria + ou - isso??
|
|
|
 |
|
|