0

私は現在、Java で小惑星ゲームのコードを編集する任務を負っています。メイン クラスは完成しましたが、メインによって制御されるゲーム内で相互作用するオブジェクトのクラスを完成させる必要があります。ゲームの API では、スーパークラス SpaceObject のコンストラクターが次のように記述されています。

public SpaceObject(double xPos, double yPos, double xVel, double yVel, double radius){
    setXPosition(xPos);
    setYPosition(yPos);
    setXVelocity(xVel);
    setYVelocity(yVel);
    setRadius(radius);
}

そして、そのサブクラスである彗星の概要は次のとおりです。

Comet(double xPos, double yPos, double xVel, double yVel, double radius){
  super(xPos, yPos, xVel, yVel, radius);
}

そして最後に、問題、サブクラス LargeComet の概要は次のとおりです。

LargeComet(double xPos, double yPos, double xVel, double yVel){
  super(xPos, yPos, xVel, yVel);
}

また、LargeComet の半径は 40 にする必要があります (この int の静的変数はスーパークラス SpaceObject にあります)。

パラメータが一致しないというエラーが発生しているようです。サブクラス LargeComet のコンストラクターで 5 つのパラメーター値を使用することはできません。これは、4 つのパラメーターでそれを参照するメイン クラスでエラーが発生するためです (メイン クラスのコードを変更することは想定されていません)。スーパークラスのコンストラクターを明示的に呼び出すことについて、ここで何か忘れていますか?

4

2 に答える 2

1

必要な引数 (5 つ) を指定して super() を呼び出す必要があります。静的な場合は、引数の代わりに静的な値を指定します。親が 3 つの引数を取るクラスの場合、次のようになります。

MyClass(int arg1, int arg2)
{
  super(arg1,arg2,5);
}
于 2013-04-23T02:34:07.583 に答える
0

とにかく、SpaceObject はすでに LargeComet の半径を知っているので、LargeComet コンストラクターに渡された 4 つのパラメーターとスーパークラスからの定数を使用して、Comet コンストラクターを呼び出すだけです。すでに存在する以上の依存関係を作成していません。

于 2013-04-23T02:35:51.480 に答える