-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

错误是不言而喻的..您没有主要方法,或者由于某种原因,自行车被定义为不应该的入口点。再看一眼,看起来你Vehicle应该被定义为入口点,而不是。

ps你的类层次结构令人困惑。

于 2012-12-27T09:18:04.293 回答
0

创建一个具有 main 方法的单独类进行测试(没有这个你的程序将不会执行,因为它是起点)你可以在其中创建你的类的构造函数

于 2012-12-27T09:19:01.673 回答
0

你的课对我来说很好。你写代码的文件的名称是什么?文件名应该等于公共类名。

于 2012-12-27T09:22:15.913 回答
0

我猜你正在尝试自己运行这个类。当您尝试自行运行该类时,Java 运行时需要该 public static void main(String[] args) 方法。尝试创建另一个 Java 类,如 Test.java,它具有 main 函数并调用其中的构造函数。请务必运行 Test.java 否则您将不断收到相同的错误。

于 2012-12-27T09:24:26.460 回答
0

请尝试将类分隔成单独的文件,并将文件命名为类的名称。然后在 Bicycle 类中添加一个 public static void main(String[]arg) 。然后运行它,您将看到结果。

于 2012-12-27T09:31:45.283 回答
0

问题不在编译时,因为即使您单独编译这些文件,它们也应该可以正常编译。我的猜测是您可能正在使用 IDE(Netbeans 或 Eclipse)并且您没有将 Vehicle.java 设置为主类。

于 2012-12-27T12:10:43.670 回答