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