[英]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.