我收到以下代碼中標題中提到的錯誤。請告訴我爲什麼我得到這個錯誤,雖然我沒有從超類的任何地方調用默認構造函數MyNumber(),以及如何解決它。隱式超類構造函數MyNumber()未定義。必須調用另一個構造函數
package referencereturntype;
公共類mynumber的{ 字符串NUM;
public MyNumber(String str){
num=str;
}
public static void main (String [] args){
MyNumber my_num= new MyNumber("+2");
System.out.println("Success! The object of the class itself is successfully returned from retOb(). The object now contains the string : " + retOb(my_num).num);
}
public static SubMyNumber retOb(MyNumber my_num){
SubMyNumber sub_my_num= new SubMyNumber("-50");
sub_my_num.nums=my_num.num;
return sub_my_num;
}
}
公共類SubMyNumber延伸mynumber的{ 字符串NUMS;
public SubMyNumber(String strs){
nums=strs;
}
}
在此先感謝。
但是爲什麼?爲什麼必須使用超類的構造函數? – user2882662
@ user2882662因爲你在說'SubMyNumber'是一個'MyNumber',構造'MyNumber'實例的唯一方法是使用帶有一個參數的構造函數。 – nachokk
所有類都需要調用超類的構造函數。這是爲了允許超類實例化其所有成員。假設你有一個名爲'Animal'的類,它有一個叫getName()的方法和一個相應的'name'變量。你繼承「Animal」並創建一個Cat類。當你有一個'Cat'類的實例時,你可以調用'getName()'。但是如果你沒有調用超級構造函數,那麼'name'變量就不會被設置。 – Chill