2

main() メソッドを使用していないため、カレル・ザ・ロボットが実行するプログラムで疑問に思っていました。代わりに run() メソッドを使用しました。

import stanford.karel.Karel;

public class CollectNewspaperKarel extends Karel { 
  public void run() { 
    move(); 
  } 
}

それはどのように機能しますか?

4

5 に答える 5

6

実際のメイン メソッドは別の場所にあります。たとえば、KarelRunner クラスで。Java がプログラムを実行すると、実際にはランナー クラスのメイン メソッドが実行されます。独自の run メソッドがそのランナー コードから呼び出されます。

于 2014-07-26T22:24:25.277 に答える
2

「メイン」メソッドは、すべての Java プログラムの開始点です。このクラスで何が起こっているかというと、それ自体は Java プログラムではなく、ある種のフレームワーク (この場合はカレル ロボットの Java 実装) 内で実行されます。このフレームワークにはもちろん「メイン」メソッドがありますが、このクラスはありません。フレームワークは、このクラスをロードして run メソッドを実行する方法を知っています。

この「プログラム」は、特殊なタイプのプログラムを実行するように設計されたフレームワークです。私はこの「カレル フレームワーク」を知りませんが、たとえば、Java Web アプリケーションをプログラムする場合、「サーブレット」は作成しますが、「サーブレット」は作成しません。 「メイン」メソッド。もちろん、「メイン」メソッドを持ち、このサーブレットクラスを取り、何らかのhttpメッセージへの応答のために実行する「アプリケーションサーバー」と呼ばれるプログラムがいくつかあります。

于 2014-07-27T01:59:45.617 に答える
0

これらの指示をすべて読むと、Karel によって実行されているプログラムが大きなシステムの小さな部分であることがわかります。大きなシステムには、地図の描画、論理エラーの発見などが含まれますrun()。実際にシステム全体を実行するクラスの 1 つと、run()プログラムのこれらの呼び出しの 1 つです。幸運を。

于 2014-07-26T22:29:36.140 に答える