Esta es una pregunta por curiosidad.Polimorfismo de Java
Sé que cuando llamamos al método reemplazado de un objeto de subclase por la referencia de su superclase, JVM da importancia al tipo de objeto y no al tipo de referencia.
Este es mi código simple:
class Animal
{
void eat()
{
System.out.println("Animal is eating...");
}
}
class Horse extends Animal
{
@Override
void eat()
{
System.out.println("Horse is eating...");
}
}
public class PolymorphismTest
{
public static void main(String...args)
{
Animal a=new Animal();
a.eat();
Animal h= new Horse();
h.eat();
}
}
Como era de esperar, consigo la salida:
run:
Animal is eating...
Horse is eating...
BUILD SUCCESSFUL (total time: 0 seconds)
Ahora mi pregunta es, ¿Hay alguna manera de que podamos usar de referencia h llamar el método superclass eat() y no la subclase uno? Sé que esta es una pregunta que va en contra de las leyes del polimorfismo, pero nunca se sabe cuándo puede surgir la necesidad de hacerlo.
Traté de escribir la referencia h en Animal pero no tuve suerte. ¿Algunas ideas?
duplicado Posible de http://stackoverflow.com/questions/5411434/how-to-call-a-superclass-method-using-java-reflection –
Y también es posible duplicado de http: // stackoverflow. com/questions/1032847/can-java-call-parent-overridden-method-in-other-objects-but-not-subttype –
Estoy de acuerdo. Perdón por no pasar por eso. Investigué pero no pude encontrar esto. – Kameron