繁体   English   中英

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

[英]How to use constructors in 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 ,但是我不希望这样做。 是否可以通过某种方式创建对象而无需使用静态方法?

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

public  Bicycle(){ //This is a constructor

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

错误是显而易见的..您没有主要方法,或者由于某些原因,将自行车定义为不应进入的入口点。 再看一眼,看起来应该将您的Vehicle定义为入口点,而不是它。

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

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

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

我猜您正在尝试自己运行此类。 当您尝试自行运行类时,Java运行时需要该公共静态void main(String [] args)方法。 尝试创建另一个Java类(如Test.java),该类具有主要功能,并在其中调用构造函数。 请确保运行Test.java,否则您将继续收到相同的错误。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM