> -----Mensagem original-----
> De:   Carlos Alberto Viana Correia - SAO 
> Enviada em:   quinta-feira, 8 de março de 2001 10:10
> Para: '[EMAIL PROTECTED]';
[Carlos Alberto Viana Correia - SAO]  
> Assunto:      
> 
> André,
> 
> Há algum tempo li uma reposta muito interessante a respeito de
> polimorfismo e um exemplo bem claro da aplicabilidade do conceito. O
> polimorfismo como característica OO envolve ouitros conceitos que comento
> a seguir.
> 
> Polimorfismo utiliza duas caracteristicas da OO: Herança e Sobreposição.
> Primeiro a sobreposição:
> 
> Sobreposição: Uma classe B extende uma classe A. Esta classe A define um
> método void do (). A classe B sobrepõe o método void do () da classe A por
> declará-lo e implementá-lo.
> Isso é diferente de sobrecarga, que siginifica ter vários métodos com
> mesmo
> nome e diferentes assinaturas ou tipos de parâmetros.
> 
> A idéia por detrás da sobreposição é mudar o comportamento - é a
> virtualidade de funções, enquanto da
> sobrecarga é manter o comportamente alterando os tipos de parâmetros,
> mudar a lista de parametros, é mudar para permanecer.
> 
> Toda instancia de uma classe B que extenda uma classe A pode ser usada no
> lugar de uma instancia da classe A.
> Logo o código abaixo é legal:
> 
> B b = new B ();
> A a;
> a = b;
> 
> O inverso não é verdadeiro e exige o famoso CAST para transformar o tipo
> 
> A a = new A ();
> B b;
> b = (B) a;
> 
> Bem o poliformismo nada mais é que a capacidade de todas as subclasses de
> uma classe A se comportarem de forma diferente quando invocamos nelas os
> mesmos métodos através de tipos diferentes, o compilador resolve apenas
> tendo os tipos como informação necessária e suficiente para determinar
> qual função ou método chamar, esta é a poção que faltava para algo passar
> por outra coisa.
> É o show...
> 
> Imagine que as classes B, C e D sobreponham o método void do () da classe
> A
> cada um mostrando uma mensagem diferente no prompt.
> 
> Agora veja este código
> 
> public class Test {
> 
>       public static void main (String [] s) {
>               callDo (new B ());
>               callDo (new C ());
>               callDo (new D ());
>       }
> 
>       private static void callDo (A a) {
>               a.do ();
>       }
> }
> 
> Este código compila, funciona e é um exemplo de polimorfismo.
> Como tanto B, C e D podem assumir o lugar de A, o comportamento da
> instancia
> "a" dentro do método callDo pode assumir qualquer forma, logo o nome
> polimorfismo!
> 
> Acho que entendeu, eu também....
> ---------------------------------------------------------
>   Carlos Alberto Viana Correia
>       Analista de Sistemas
>       [EMAIL PROTECTED]
>       [EMAIL PROTECTED]
>       Fone C.:30214003
> --------------------------------------------------------
> 

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