Mais uma citacao do livro Core Java, Cornell & Horstmann, Makron Books,
1998, traduzido do original da Sun (pg 155-6):
A capacidade de um objeto decidir qual metodo aplicara a si mesmo,
dependendo de onde se encontra na hierarquia de heranca, e chamda de
polimorfismo. A ideia por tras do polimorfismo eh que, embora a mensagem
possa ser a mesma, os objetos talvez respondam de forma diferente. O
polimorfismo pode se aplicar a qualquer metodo herdado de uma superclasse.
A chave para que o polimorfismo funcione eh chamada de ligacao adiada. Isso
significa q o compilador nao gera o codigo para chamar um metodo em tempo de
compilacao. Em vez disso, sempre que vc define um metodo com um objeto, o
compilador gera o codigo para calcular qual metodo chamara, usando a
informacao de tipo do objeto. Esse processo geralmente eh conhecido como
ligacao adiada, ligacao dinamica ou despacho dinamico. O mecanismo regular
de chamada de funcao eh conhecido como ligacao estatica, pois a operacao a
ser executada eh completamente determinada em tempo de compilacao. A ligacao
estatica depende apenas do metodo; a ligacao dinamica depende do tipo de
variavel do objeto e da posicao do objeto real na hierarquia de heranca.
Resumindo, a heranca e o polimorfismo permitem que o aplicativo informe o
modo geral pelo qual deseja que as coisas prossigam. As classes individuais
na hierarquia de heranca sao responsaveis por executar os detalhes - usando
o polimorfismo para determinar quais metodos chamarah.
O polimorfismo em uma hierarquia de heranca as vezes eh chamado de
POLIMORFISMO VERDADEIRO, distinguindo-o do tipo mais limitado de sobrecarga
de nome que nao eh resolvido dinamicamente, mas estaticamente, em tempo de
execucao.
Veja a pagina 7 do glossario da apostila do curso SL-110:
polymorphism
A method that is "multiply formed". That is, the same method name with THE
SAME PROTOTYPE is defined for TWO OR MORE CLASSES. Polymorphic methods have
the same semantics (that is, to read, write, display, and update an object),
but different IMPLEMENTATIONS. Each implementation is appropriate for the
particular class for which it is defined.
Resumindo:
-> Polimorfismo tem a ver com heranca
-> Polimorfismo tem a ver com fazer:
public class Animal {
public void oi() {
System.out.println("animal");
}
}
public class Cachorro extends Animal {
public void oi() {
System.out.println("cachorro");
}
}
public class Teste {
public static void main(String[] args) {
Animal animal = new Cachorro();
animal.oi();
}
}
e receber cachorro na saida padrao.
-> Polimorfismo tem a ver com dynamic binding ou late binding e nunca com
static binding
-> A crenca de q polimorfismo eh sobrecarga ou overloading vem da epoca do
C, quando nao havia orientacao a objetos. Hoje, digamos assim, dizer que
overloading == polimorfismo eh "deprecated".
Os materiais citados sao propriedade intelectual de seus autores. Se alguem
ainda tiver duvida sobre esses conceitos basicos da OOP, faca um curso da
Sun, pq pra isso eles sao bons (aprender Java mesmo eh mais complicado...)
[]'s
Michael Nascimento Santos
Analista/Consultor
CPM Sistemas - www.cpm.com.br
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------