Polimorfismo Java

Esta é uma questão apenas por curiosidade.

Eu sei que quando chamamos o método substituído de um objeto de subclasse pela referência de sua superclasse, a JVM dá importância ao tipo de objeto e não ao tipo de referência.

Este é o meu código simples:

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 esperado, recebo a saída:

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

Agora, minha pergunta é: Existe alguma maneira de usarmos a referência h para chamar o método superclass eat () e não o da subclasse? Eu sei que esta é uma questão que é um pouco contra as leis do polimorfismo, mas você nunca sabe quando a necessidade pode surgir para fazê-lo.

Eu tentei typecast a referência h para Animal, mas sem sorte. Alguma ideia?

questionAnswers(4)

yourAnswerToTheQuestion