Na verdade esse exemplo do livro apenas mostrou que vc pode referenciar uma
subclasse com uma referencia da superclasse.
Sou totalmente inexperiente mas sei que isso na pr�tica tem v�rias fun��es,
por exemplo, quando vc usa um JScrollPanel vc passa como argumento para o
construtor da classe um JComponent, a classe JComponent � superclasse da
maioria dos componentes swing, portanto em um JScrollPanel vc pode colocar a
maioria dos componentes swing, porque a refer�ncia � para um JComponent,
portanto qualquer subclasse pode ser referenciada por ele.
Se n�o fosse essa tecnica a classe JScrollPanel teria que ter v�rios
construtores sobrecarregados, cada um para um poss�vel componente swing que
estaria no JScrollPanel, e cada um desses construtores faria a mesma coisa!
PS.: caso ainda n�o tenha visto a classe JScrollPanel, vc a vera no cap 12,
na p�gina 555, em um exemplo de JList
----- Original Message -----
From: "Lincoln Masao Muraoka Junior" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, February 03, 2003 9:15 AM
Subject: Re: [java-list] polimorfismo ..?
Bom,
Concordo que as duas chamadas v�o chamar o mesmo m�todo. Logo porque n�o
chamar o m�todo pela subclasse direto n�?
Eu enxergo no m�nimo duas utiliza��es interessante para isso.
Imagine que voc� crie uma super classe "Sup" e 20 subclasses "Sub1",
"Sub2" ... "Sub20". A classe Sup tem um m�todo save() que todas as
subclasses sobreescrevem, que � respons�vel pela persist�ncia do objeto.
Agora suponha que voc�, durante o processamento de um programa crie uma
inst�ncia de cada uma das subclasses, e ao final do processamento precisa
chamar o m�todo save de todo mundo. Vai te dar um pouquinho de trabalho
chamar o save de cada um deles.
Ao inv�s disso, voc� poderia estar criando um array de objetos Sup, como
Sup AAA [].
Dentro de cada linha do array, voc� colocaria uma refer�ncia a cada um
dos objetos de subclasse, e ao final do processamento, poderia chamar um for
e a cada linha do for, vc chama o metodo save da super classe, algo como:
for(int i = 0 ; i < AAA.lenght; i++){
AAA[i].save();
}
Como o m�todo save chamado seria indiretamente o da subclasse, voc�
teria o processamento exatamente com esperado, sem precisar chamar o m�todo
save para cada um dos tipos de subclasse existente, economizando escrita.
N�o sei se voc� n�o perde muito em processamento em fun��o do for, por�m com
certeza voc� economiza c�digo, podendo inclusive dessa forma automatizar
alguns processos, pensando assim de forma abstrata.
Um outro exemplo � que voc� poderia utilizar o conceito de factory dessa
maneira tamb�m. Imagine que voc� tem uma classe que trata Funcionalidades de
um sistema. Assim, voc� cria uma super classe Funcionalidade, que possui
alguns m�todos padr�o e a cada nova funcionalidade, voc� cria uma classe que
extende a super classe Funcionalidade. Assim, voc� poderia ter uma classe
tratadora das funcionalidades que trata uma funcionalidade gen�rica, e
sempre que adicionar uma nova funcionalidade, basta criar uma nova classe
que extende a classe Funcionalidade e registra-la em um arquivo de
configura��es, por exemplo. A classe tratadora sempre trabalha com os
metodos de superclasse, de forma que voc� n�o precisa nunca mais mexer nela,
aumentando bastante a reutiliza��o dos seus componentes bem como
escalabilidade.
ETA
[]s
Lincoln Masao Muraoka Junior
Analista Programador
ASTI Tecnologia - Unidade de Solu��es
Tel.: 55 11 3031-0069 r. 232
[EMAIL PROTECTED]
www.astitecnologia.com.br
----- Original Message -----
From: "everson" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, January 24, 2003 2:15 PM
Subject: [java-list] polimorfismo ..?
ol� lista.
To lendo o Java como Programar - Deitel, cap 9, p�g 409 � 414. Arquivo
Test.java (413). A d�vida �:
pq que ao inv�s de fazer:
1)
Employee ref; // superclass reference
Boss b = new Boss( "John", "Smith", 800.00 );
ref = b;
output += ref.toString() + " earned $" + .... (como est� no livro)
n�o fez direto :
2)
output += b.toString() + " earned $" + .... (minha d�vida)
J� q no 1) vai ser chamado o metodo toString da classe Boss, como no 2) ...
Existe alguma diferen�a entre
um e outro ???
------------------------------ 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
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------
------------------------------ 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
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------
------------------------------ 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
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------