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