-2
import java.util.Random;

class VehicleConstructor{

    private int startSpeed;

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

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

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

class Bicycle extends Vehicle{

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

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

問題は、クラスからメソッドBicycleを呼び出そうとするクラスにあります。と も試してみました。なにが問題ですか?getSpeed()VehicleConstructorthissuper

4

6 に答える 6

2

getSpeedあなたが提供したコードには名前の付いたメソッドはありません - だけですsetSpeed- そしてそのメソッドは ですprivate。つまり、外部のクラスからアクセスすることはできません。

于 2012-12-26T21:03:17.483 に答える
2

あなたのBicycleクラスは現在Vehicle、 ではなく を拡張していVehicleConstructorます。拡張してメソッドVehicleConstructorを作成するgetSpeed()と、問題が解決するはずです。

于 2012-12-26T21:03:19.007 に答える
0

私はあなたがこのようなものをもっと欲しいと思います:

 class Vehicle{

    private int startSpeed;

    public Vehicle() {
        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;
    }
    public int getSpeed(){ 
        return startSpeed; 
    } 
}

public class bicycle extends Vehicle{

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

}

public class VehicleCostructor{

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

    }
}

VehicleConstructorがクラスの単なるテストであると想定します。

テストするためのより良い方法は、おそらくJUnitを使用することです。非常に便利で使いやすいツールです。

これがお役に立てば幸いです。

于 2012-12-26T21:29:43.197 に答える
0

setSpeed()の方法でありVehicleConstructor、 ではありませんVehicle

ただし、タイプミスでgetSpeed()のメソッドであるVehicle場合は、 として宣言されているため、アクセスできませんprivate。親のメソッドにアクセスするために必要な最小限のアクセス修飾子はprotected.

于 2012-12-26T21:04:07.617 に答える
0

getSpeed ()がVehicleConstructorクラスで定義されていないようです!!!

于 2012-12-26T21:04:53.920 に答える