-1
//Vehicle.java

import java.util.Random;

class VehicleConstructor{

    private int speed;
    private int timeDriven;
    private int run;
    private int startSpeed; //Pradinis greitis

    public VehicleConstructor() {
        setSpeed();
        System.out.println("Vehicle");
    }

    private void setSpeed(){
        int minSpeed = 1;
        int maxSpeed = 40;

        Random random = new Random();
        this.startSpeed = random.nextInt(maxSpeed - minSpeed + 1) + minSpeed;
    }

    protected int getSpeed(){
        return startSpeed;
    }
}

class Bicycle extends VehicleConstructor{

    public void Bicycle(){
        System.out.println(getSpeed());
    }
}

public class Vehicle{
    public static void main(String[] args){
        Bicycle bicycle = new Bicycle();
    }
}

親からメソッドBicycleを継承VehicleConstructorして呼び出すオブジェクトを作成したい。getSpeed()問題は、エラーが発生することです:

エラー: クラス Bicycle にメイン メソッドが見つかりません。メイン メソッドを次のように定義してください: public static void main(String[] args)

私が知る限り、Java コンストラクターはクラスと同じ名前なので、

 public void Bicycle(){
        System.out.println(getSpeed());
    }

しかし、エラーは私が必要public static void mainだと言っているので、他のクラスも一緒staticにする必要がありますが、私はこれを望んでいません。静的メソッドを必要とせずにオブジェクトを作成することは可能ですか?

4

7 に答える 7

3
public void Bicycle(){ //This is a method

public  Bicycle(){ //This is a constructor

コンストラクターには戻り値の型がなく、void さえありません。

于 2012-12-27T09:17:41.503 に答える
2

エラーは自明です..メインメソッドがないか、何らかの理由で、bicycle が本来あるべきではないエントリポイントとして定義されています。Vehicleもう一度見てみると、エントリ ポイントとして定義する必要があるように見えますが、そうではありません。

psあなたのクラス階層は混乱しています。

于 2012-12-27T09:18:04.293 に答える
0

クラスを別々のファイルに分けて、クラスの名前としてファイルに名前を付けてみてください。次に、Bicycle クラスに public static void main(String[]arg) を追加します。それを実行すると、結果が表示されます。

于 2012-12-27T09:31:45.283 に答える
0

あなたのクラスは私にとってはうまくいきます.コードを書いたファイルの名前は何ですか?ファイル名はパブリッククラス名と同じでなければなりません..

于 2012-12-27T09:22:15.913 に答える
0

テストするメインメソッドを持つ別のクラスを作成します(これがないと、プログラムは開始点であるため実行されません)。ここで、クラスのコンストラクターを作成できます

于 2012-12-27T09:19:01.673 に答える
0

これらのファイルを個別にコンパイルしても、問題なくコンパイルされるはずなので、問題はコンパイル時ではありません。私の推測では、おそらく IDE (Netbeans または Eclipse) を使用しており、Vehicle.java をメイン クラスとして設定していません。

于 2012-12-27T12:10:43.670 に答える