Polimorfismo de java

Esta es una pregunta solo por curiosidad.

Sé que cuando llamamos al método anulado 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, obtengo la salida:

run:
Animal is eating...
Horse is eating...
BUILD SUCCESSFUL (total time: 0 seconds)

Ahora mi pregunta es: ¿Hay alguna forma en que podamos usar la referencia h para llamar al método de superclase eat () y no a la subclase uno? Sé que esta es una pregunta que está en contra de las leyes del polimorfismo, pero nunca se sabe cuándo puede surgir la necesidad de hacerlo.

Intenté encasillar la referencia h a Animal pero no tuve suerte. ¿Algunas ideas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta