2017-04-27 85 views
0

在下面的類HiddenWord中,我創建了一個實例變量,它通過一個字符串進行初始化。這是正確的做法嗎?我們可以在類類型的相同類默認構造函數中創建實例變量嗎?

此外,當我使用這個對象時,我需要一個toString方法嗎?

public class HiddenWord{ 

private String Hword; 

public HiddenWord(String word){ 


    Hword = new HiddenWord(word); 
} 

} 
+0

如果你在構造函數'HiddenWord'中調用'new HiddenWord(...)',它將不起作用。在發佈之前,您應該始終嘗試編譯代碼;錯誤信息,如果你有任何問題,將會告訴你。而'Hword'應拼寫'hiddenWord'或'hWord'以符合Java的命名約定。拼寫它像一個類型會混淆人。 –

回答

1

才能創建該類類型的同一類的默認構造函數實例變量?

這是可能的,但是你的類型在你的代碼中是不一樣的。你有String類型變量,你的Class類型是HiddenWord

當你這樣做

Hword = new HiddenWord(word); // wrong. 

不,這是錯誤的。因爲字符串不是HiddenWord

你只需要接收到的字符串分配給varaible Hword

this.Hword =word; 

此外,當我使用這個對象,我需要一個toString方法這樣做呢?

這真的取決於你如何使用它。只是爲了展示這堂課的內容?是。

順便說一句,varvariable名稱以java中的小寫字母開頭。

0

首先:是的,您必須顯式調用toString方法來將您新創建的HiddenWorld對象作爲字符串存儲在Hword中。

二,這是一個很不好主意。在那裏調用構造函數會導致遞歸和StackOverflowError,因爲每次調用構造函數時都會再次調用自己,並繼續使用新的方法調用填充堆棧。

第三,要存儲在Hword給定字的假設,只要做到這一點:

Hword = word; 

附加: toString方法是始終存在的對創建的任何對象,因爲它已定義Object類,它由所有其他類擴展。

相關問題