簡體   English   中英

構造函數給出2個錯誤

[英]Constructor is giving 2 errors

package vehicleapp;

public class Car extends Vehicle {
    int seatCap;

    public Car(String name, int modelNo, int seatCap) {
        this.seatCap = seatCap;
        super(name, modelNo);
    }
}

這段代碼有什么問題?

super(name, modelNo); 必須是構造函數主體中的第一個語句(無論何時顯式包含它),因為超類構造函數必須在子類構造函數的主體之前執行:

public Car(String name, int modelNo, int seatCap) {
    super(name, modelNo);
    this.seatCap = seatCap;
}

在任何構造函數調用中,如果正在使用super,則必須是第一行。 docs.oracle.com/javase/tutorial/java/IandI/super.html

super(name, modelNo);

使用super()作為構造函數中的第一行,原因是在此處的SO-answer中共享- 為什么這個和超級構造器中的第一個語句如此您可以將現有代碼更改為-

public Car(String name, int modelNo, int seatCap) {
    super(name, modelNo);
    this.seatCap = seatCap;
}

在您的Vehicleapp包中

您的車輛等級必須是這樣

public class Vehicle{
private String name,modelNo;
    Vehicle(String name ,String modelNo)
    {
          this.name=name;
          this.modelNo=modelNo;
    }
}

Super(); 在子類中創建構造函數時,關鍵字應位於頂部,該構造函數首先查找superClass構造函數,直到Object SuperClass。

層次結構:

子Contrctor->(尋找父構造器)-> ParentClass->(如果它也繼承了任何超類,則應該具有超類的超類構造器,即Super();)-> ...->對象超類。

通常我們有關鍵字super(); 在所有用戶定義的構造函數中,但顯而易見的是未編寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM