我在java项目中有一个继承的对象,我试图调用子对象中的overriden方法。由于某种原因,该方法的父版本被调用。我对多态性的理解是,方法的最低版本总是被调用。为什么父版本被调用?
public class Generator
{
public static void acceptPending()
{
System.out.println("top level is called");
}
}
public class GeneratorNeo extends Generator
{
public static void acceptPending()
{
System.out.println("neo level is called");
}
}
public class Driver()
{
public static void main(String[] args)
{
Generator gen = null;
gen = new GeneratorNeo();
gen.acceptPending(); // prints top level is called
}
}
字符串
2条答案
按热度按时间4szc88ey1#
acceptPending是一个静态方法,静态方法是根据对象的编译时类型调用的ie Parent类型。不像示例方法。
因此从这两个类中删除static关键字将为您提供给予预期的行为。
o3imoua42#
字符串