Java полиморфизм

Это вопрос просто из любопытства.

Я знаю, что когда мы вызываем переопределенный метод объекта подкласса посредством ссылки на его суперкласс, JVM придает значение типу объекта, а не типу ссылки.

Это мой простой код:

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();
    }
}

Как и ожидалось, я получаю вывод:

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

Теперь мой вопрос Можно ли использовать ссылку h для вызова метода eat () суперкласса, а не метода подкласса? Я знаю, что это вопрос, который несколько противоречит законам полиморфизма, но вы никогда не знаете, когда может возникнуть необходимость в этом.

Я попытался напечатать ссылку h на Animal, но безуспешно. Есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос