Java-Polymorphismus

Dies ist nur aus Neugier eine Frage.

Ich weiß, dass JVM, wenn wir die überschriebene Methode eines Unterklassenobjekts durch die Referenz seiner Oberklasse aufrufen, dem Objekttyp und nicht dem Referenztyp Bedeutung beimisst.

Das ist mein einfacher Code:

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

Wie erwartet erhalte ich die Ausgabe:

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

Meine Frage ist nun: Gibt es eine Möglichkeit, die Referenz h zu verwenden, um die übergeordnete eat () -Methode und nicht die untergeordnete aufzurufen? Ich weiß, dass dies eine Frage ist, die etwas gegen die Gesetze des Polymorphismus verstößt, aber Sie wissen nie, wann sich die Notwendigkeit dazu ergibt.

Ich habe versucht, den Verweis h auf Animal zu tippen, aber kein Glück. Irgendwelche Ideen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage