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