如何在Java中使用构造函数?

时间:2012-12-27 09:15:58

标签: java

//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,但我不想要这个。有可能以某种方式创建对象而不需要静态方法吗?

7 个答案:

答案 0 :(得分:3)

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

public  Bicycle(){ //This is a constructor

构造函数没有任何返回类型,甚至无效。

答案 1 :(得分:2)

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

p.s你的班级层次结构令人困惑。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我猜你正试图独自运行这个类。 Java运行时需要它     public static void main(String [] args) 尝试自己运行类时的方法。尝试创建另一个类似Test.java的Java类,它具有main函数并调用其中的构造函数。一定要运行Test.java,否则你将继续得到同样的错误。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

相关问题