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