在下面的類HiddenWord中,我創建了一個實例變量,它通過一個字符串進行初始化。這是正確的做法嗎?我們可以在類類型的相同類默認構造函數中創建實例變量嗎?
此外,當我使用這個對象時,我需要一個toString方法嗎?
public class HiddenWord{
private String Hword;
public HiddenWord(String word){
Hword = new HiddenWord(word);
}
}
在下面的類HiddenWord中,我創建了一個實例變量,它通過一個字符串進行初始化。這是正確的做法嗎?我們可以在類類型的相同類默認構造函數中創建實例變量嗎?
此外,當我使用這個對象時,我需要一個toString方法嗎?
public class HiddenWord{
private String Hword;
public HiddenWord(String word){
Hword = new HiddenWord(word);
}
}
才能創建該類類型的同一類的默認構造函數實例變量?
這是可能的,但是你的類型在你的代碼中是不一樣的。你有String類型變量,你的Class類型是HiddenWord
。
當你這樣做
Hword = new HiddenWord(word); // wrong.
不,這是錯誤的。因爲字符串不是HiddenWord
。
你只需要接收到的字符串分配給varaible Hword
this.Hword =word;
此外,當我使用這個對象,我需要一個toString方法這樣做呢?
這真的取決於你如何使用它。只是爲了展示這堂課的內容?是。
順便說一句,varvariable名稱以java中的小寫字母開頭。
首先:是的,您必須顯式調用toString方法來將您新創建的HiddenWorld對象作爲字符串存儲在Hword中。
二,這是一個很不好主意。在那裏調用構造函數會導致遞歸和StackOverflowError,因爲每次調用構造函數時都會再次調用自己,並繼續使用新的方法調用填充堆棧。
第三,要存儲在Hword給定字的假設,只要做到這一點:
Hword = word;
附加: toString方法是始終存在的對創建的任何對象,因爲它已定義Object類,它由所有其他類擴展。
如果你在構造函數'HiddenWord'中調用'new HiddenWord(...)',它將不起作用。在發佈之前,您應該始終嘗試編譯代碼;錯誤信息,如果你有任何問題,將會告訴你。而'Hword'應拼寫'hiddenWord'或'hWord'以符合Java的命名約定。拼寫它像一個類型會混淆人。 –