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] 
-------------------------------------------------------------------------

Responder a