Duvida Polimorfismo

tudo bom, sou novo em java e tenho uma simples duvida

eu estou criando duas classes PontoR2 e PontoR3, sendo a primeira uma classe onde existem pontos em 2 dimensoes(x e y) e na segunda (x,y,z)

a duvida vem na parte do instanceof
//construtor
public void show(PontoR2 p){ // P é do tipo PontoR2
if(p instanceof PontoR2){
System.out.printf(“As Coordenadas do ponto sao x=%d\n y=%d”,p.getX(),p.getY()); }
else {
if(p instanceof PontoR3){
System.out.printf(“as coordenandas do ponto sao x=%d\n y=%d\n z=%d”,p.getX(),p.getY(),p.getZ()) ; }
}
}

obs: getX, getY estao na classe pai ( PontoR2)
e getZ somente na classe PontoR3

toda vida que eu quero exibir o z, quando eu estiver fazendo referencia a R3 eu nao consigo exibir o z, ele exibe “cannot find symbol” o que é obvio ja que p é um ponto do tipo R2, eu queria saber se tenho como chamar o metodo getZ a partir da classe pai com a variavel de instancia z e o proprio metodo na subclasse, quem sabe pode ser alguma abstração

obrigado

O que você está tentando fazer não seria algo igual a isso?

Se você quer testar dois objetos diferentes, pode fazer desse jeito e fazer um cast, mas da forma como está seu código você sempre receberá um objeto do tipo PontoR2, logo nunca conseguirá rodar o método getZ com um objeto PontoR3 dentro do construtor de PontoR2 pois você não tem um objeto do tipo PontoR3 lá.

[code]public class Teste {

public Teste(Object o){
	if (o instanceof Teste) {
		((Teste) o).methodA();
	}else {
		if(o instanceof TesteB){
			((TesteB) o).methodB();
		}
	}
}
void methodA(){
}

}

public class TesteB {

void methodB(){
}

}
[/code]

Só que nesse caso não tem polimorfismo pois não existe herança, para acessar um método na sua classe filha você pode ou criar um método que chame seu método getZ, ou criar uma instância da classe filha pois a classe filha sabe como a classe Pai se comporta, mas a classe Pai não sabe como a filha se comporta.

Se alguém puder melhorar isso ai!!! :wink: