Полиморфизм 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, но безуспешно. Любые идеи?

10
задан Kameron 11 June 2012 в 18:03
поделиться