Olá,

Sou um integrante da dicas-list a tempos e não pude deixar de prestar
atenção na dica enviada pelo sr. Walter Augusto Werner. 
O problema das classes dele não é o java e sim a maneira que ele implementou
o exemplo.
----------------------------------------------------
erro no exemplo 1.

Object o = new Integer(1);
B b = new B();
b.x(o);

Quando a gente "constroi" uma classe pai com um construtor de uma de suas
subclasses, o pai ainda continua sendo da classe pai, apenas os métodos que
ambos tem em comum, e foram sobre escritos, eh que muda. Portanto o "Object
o" ainda é um Object apesar de ser inicializado com o  construtor da classe
Integer. Para que esse metodo fique do jeito que se espera, basta fazer um
cast. 

ex.: b.x((Integer)o);

-----------------------------------------------------------
erro no exemplo 2

Integer i = new Integer(1);
A a = new B();
a.x(i);

Esse erro é muito parecido com o primeiro, pois no momento em que ele
inicializa a variavel 'a' da Classe "A" com o construtor da classe "B",
apenas os métodos em comum são alterados, e como a classe "A" não tem o
método "x(Integer i)" ele sempre executa o metodo "x(Object o)". Segue o
exemplo de como deveria ser a implementação da classe "B" para que o
resultado esperado pelo nosso amigo aconteça.

ex.:

public class B extends A {
        public void x(Integer i) {
                System.out.println("Metodo Filho e é um Integer");
        }
        public void x(Object o) {
                if (o instanceof Integer) {
                        this.metodo((Integer)o);
                } else {
                        super.metodo(o);
                }
        }
}


Mas se você prestar a atenção com a correção do segundo exemplo, o primeiro
tb será corrigido.

[]'s

Marcus Vinicius Lewis Martins
RIO GRANDE ENERGIA S/A - Telemática 
mailto:[EMAIL PROTECTED] 
mailto:[EMAIL PROTECTED]
--------------------------------------------------------------
TRACE SISTEMAS LTDA 
http://www.tracesistemas.com.br 
--------------------------------------------------------------


Responder a