Это вопрос только из любопытства.Java Polymorphism
Я знаю, что когда мы вызываем переопределенный метод объекта подкласса по ссылке его суперкласса, 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)
Теперь мой вопрос, Есть ли способ, что мы можем использовать эталонную час позвонить метод superclass eat(), а не подкласс? Я знаю, что это вопрос, который несколько противоречит законам полиморфизма, но вы никогда не знаете, когда это может возникнуть.
Я попытался привить ссылку h к животному, но не повезло. Есть идеи?
Возможный дубликат http://stackoverflow.com/questions/5411434/how-to-call-a-superclass-method-using-java-reflection –
А также возможно дубликат HTTP: // StackOverflow. com/questions/1032847/can-java-call-parent-overridden-method-in-other-objects-but-not-subtype –
Согласен. Извините, что не пропустил это. Я сделал некоторые исследования, но не смог найти это. – Kameron