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

Responder a