package vehicleapp;
public class Car extends Vehicle {
int seatCap;
public Car(String name, int modelNo, int seatCap) {
this.seatCap = seatCap;
super(name, modelNo);
}
}
這段代碼有什麼問題?請告訴我!構造函數給出2個錯誤
package vehicleapp;
public class Car extends Vehicle {
int seatCap;
public Car(String name, int modelNo, int seatCap) {
this.seatCap = seatCap;
super(name, modelNo);
}
}
這段代碼有什麼問題?請告訴我!構造函數給出2個錯誤
super(name, modelNo);
必須在構造函數體的第一條語句(只要您有它明確),因爲超類構造函數必須先於子類構造函數體執行:
public Car(String name, int modelNo, int seatCap) {
super(name, modelNo);
this.seatCap = seatCap;
}
在任何構造函數調用,超級必須是正在使用的第一行。 docs.oracle.com/javase/tutorial/java/IandI/super.html
super(name, modelNo);
使用super()
爲您的構造函數中的第一行的理由,在SO-答案在這裏共享 - why-does-this-and-super-have-to-be-the-first-statement-in-a-constructor,你可以改變你現有的代碼 -
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。
Hirearchy:
孩子Contrctor->(查找父類的構造) - >父類 - >(如果它也繼承任何超它應該有父類的父類的構造,即超();) - > .. 。 - > Object SuperClass。
通常我們有關鍵字super();在所有用戶定義的構造函數中,但顯而易見的是它沒有寫成。
如果問題解決了,請給出一個答案。 – nullpointer