To jest pytanie tylko z ciekawości.Java Polymorphism
Wiem, że gdy nazywamy nadpisaną metodą obiektu podklasy przez odniesienie jej nadklasy, JVM nadaje ważność typowi obiektu, a nie typowi odniesienia.
To jest mój prosty kod:
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();
}
}
Zgodnie z oczekiwaniami, pojawia się komunikat:
run:
Animal is eating...
Horse is eating...
BUILD SUCCESSFUL (total time: 0 seconds)
Teraz moje pytanie brzmi, Czy istnieje jakiś sposób, że możemy użyć odniesienia h zadzwonić metoda superclass eat(), a nie podklasa? Wiem, że jest to kwestia nieco sprzeczna z prawami polimorfizmu, ale nigdy nie wiadomo, kiedy może zaistnieć taka potrzeba.
Próbowałem typografią odniesienia h do Animal, ale bez powodzenia. Jakieś pomysły?
Możliwy duplikat http://stackoverflow.com/questions/5411434/how-to-call-a-superclass-method-using-java-reflection –
A także możliwy duplikat http: // stackoverflow. com/questions/1032847/can-java-call-parent-overridden-method-in-other-objects-but-not-subtype –
Zgadzam się. Przepraszam, że tego nie przeżyłem. Zrobiłem trochę badań, ale nie mogłem tego znaleźć. – Kameron