0

Greenfoot に慣れていないすべての人のために、以下にコンテキストを示します。

Greenfoot は、アニメーションを使用した Java 学習ツールです。このツールには、いくつかの定義済みメソッドを持つ「Actor」と呼ばれる定義済みクラスがあります。「Car」、「Truck」など、このクラスのサブクラスを作成してオブジェクトを追加できます。

「Car」と「Truck」という「Actor」のサブクラスを作成しました。「Car」クラスのメソッドから「move(移動速度を示す何らかの引数)」という「Actor」クラスの定義済みメソッドを次のように呼び出しましたmove(5);

私の質問は次のとおりです。「Car」クラス オブジェクトについてここで言及する必要がないのはなぜですかc1.move(5);。「c1」は「Car」クラス オブジェクトです。「Car」クラスで「move」メソッドを定義していないため、「Actor」クラスで事前定義されたメソッドを直接呼び出して実装することは理解できますが、「Car」クラスのことをどのように認識できるのでしょうか。 'ここにクラスオブジェクト? 'Truck' クラスのオブジェクトだった可能性もあります。「車」クラスのメソッドからメソッドを呼び出しているためでしょうか。それは推測ですか?

はいの場合、これはJavaの一般的なルールですか、それともGreenfootの特定の実装のみですか?

4

1 に答える 1

0

main() で Car クラスのオブジェクトを作成し、methodThatCallsMove() などのメソッドを呼び出しているとします。

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

このメソッド内では、単純に move(5) を呼び出しています。

methodThatCallsMove(){
  move(5);
}

cこれにより、現在のオブジェクトの (つまり) メソッドが自動的に呼び出されますmove。ここでオブジェクトにバインドされている move() のバージョンはc、Car クラスに別の move() メソッドを実装したか、または Actor クラスの元の move() メソッドを単に継承しているかによって異なります。前者の条件は Car クラスに実装された move() を呼び出し、後者は Actor クラスの move() を呼び出します。

お役に立てれば。

于 2016-06-26T08:28:07.407 に答える