Java - Polimorfismo y herencia

 
Vista:

Polimorfismo y herencia

Publicado por Alfonso (1 intervención) el 11/11/2007 13:52:29
class A{
protected String nombre;
public A(String n){
this.nombre=n;
}
public void mostrar(){
System.out.println(nombre);
}
}

class B extends A{
private int valor;
public B(String n,int v){
super(n);
this.valor=v;
}
public void mostrar(){
System.out.println(nombre+" "+valor);
}
}

Tengo el diseño de estas dos clases. B hereda de A y como se puede observar en B he definido el metodo mostrar que sobrecarga al metodo de la clase A. Mi problema es el siguiente. Como puedo hacer para que con un objeto de tipo B, al ejecutar objetoB.mostrar(); me utilice el de la clase Padre y no el suyo propio. He intentado el siguiente código pero no consigo que se ejecute solo la parte A del objeto B.

class Herencia_AB{
static public void main(String[] args){

B x =new B("pepe",1);

A h=(A)x;
h.mostrar(); //AQUI ME SIGUE UTILIZANDO EL METODO DE LA CLASE B
//CUANDO YO QUIERO QUE SOLO SALGA EL string "pepe".
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Polimorfismo y herencia

Publicado por Antonio Diéguez (42 intervenciones) el 11/11/2007 15:32:04
claro siempre te usa el método de su tipo más específico, no importa si le haces casting.
tienes que usar super.mostrar() pero dentro de un método en B, por ejemplo public void mostrar2() { super.mostrar(); }, que yo sepa por lo menos, sino que alguien me corrija. O haces un A h = new A(x); claro k pierdes lo de B.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar