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