簡體   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