关于 Greenfoot 的继承相关查询

Inheritance related query regarding Greenfoot

对于所有不熟悉 Greenfoot 的人,以下是上下文:-

Greenfoot 是一个使用一些动画的 java 学习工具。在此工具中,有一个名为 'Actor' 的预定义 class 和一些预定义方法。我们可以通过创建此 class 的子 class 来添加对象,例如 'Car'、'Truck' 等

我为 'Actor' 创建了名为 'Car' 和 'Truck' 的子 classes。我调用了 'Actor' class 中的预定义方法,从 'Car' class 中的方法调用了 'move(some argument denoting speed of the movement)' 作为:move(5);

我的问题是:为什么我不需要在此处提及 'Car' class 对象,如:c1.move(5); 其中 'c1' 是 'Car' class 对象?我可以理解,因为我没有在'Car'class中定义'move'方法,所以会直接调用并实现'Actor'[=42=中预定义的方法], 但是它怎么知道我在这里指的是 'Car' class 对象呢?它也可能是 'Truck' class 对象!是不是因为我从 'Car' class 方法调用该方法,它是在推断吗?

如果是,那么这是 java 中的一般规则还是只是 Greenfoot 的特定实现?

假设在 main() 中,您正在创建 Car class 的一个对象,并调用一个方法,比如 methodThatCallsMove():

Car c = new Car();
c.methodThatCallsMove();

在此方法中,您只是调用 move(5):

methodThatCallsMove(){
  move(5);
}

这将自动调用当前对象(即c)的方法move。 move() 绑定到对象 c 的版本取决于您是否在 Car class 中实现了单独的 move() 方法,或者您是否只是继承了原始的 move() 方法在 Actor class 中。前一个条件调用您的 Car class 中实现的 move(),后者将调用您的 Actor class.

中的 move()

希望这对您有所帮助。