2013-11-22 35 views
0

我正在閱讀我的編程文本,我有我認爲的關於構造函數的非常合理的問題。構造函數以及如何利用它們

例如,如果我的代碼:

public class Ship{ 
    String name; 
    int position; 

    public Ship(int position){ 
     this.position = position; 
    } 
    public Ship(String name){ 
     this.name = name; 
    } 
    public Ship(){ 
     name = "Titanic"; 
     position = 0; 
    } 
} 

所以,如果我有我的行話糾正Ship()是默認的構造函數。而帶參數的構造函數是初始化構造函數。

現在,這是背景......這是我的問題!當我使用其中一個包含參數的構造函數時,正在使用的字段會發生什麼情況(在本例中是其他字段)。例如,當我撥打Ship(5)時,name數據字段的值是多少?它是否採用默認值或數據類型的默認值?

這是否意味着我必須爲其他字段設置一個值,如果我調用這個單參數構造函數?

+3

爲什麼「默認構造函數」具有小寫名稱,爲什麼類外的構造函數? – Justin

+0

-1確保發佈編譯代碼(除非問題是關於爲什麼代碼不能編譯)。 – user2864740

+0

我的歉意,我很快寫了這個,只是爲了更容易地解釋這個問題=)。 – user2879101

回答

5

任何您未初始化的實例變量都由Java給出默認值。原始類型的值爲0,引用類型爲null

您不必初始化值,但爲了清楚起見,最好明確地初始化所有值。

+0

因此,我想最好的做法是從get go中給出實例變量值...例如String name =「battleship」。如果是這種情況,默認構造函數將如何操作?它只是公共船(){沒有代碼塊B/C默認值已被使用} – user2879101

3

該字段獲取默認字段值:數字爲0,對象爲null。如果默認值不是你想要的,你必須在one-argument構造函數中設置另一個字段的值。

相關問題