2017-04-20 93 views
-1

在我的任務,我給一個Food類是這樣的:如何設置實例變量的默認值?

class Food { 
    private String name; // name of food 
    private int calPerServing; // calories per serving 
    // must be >= 0 
    // min storage temperature // must be >= 0. 
    // max storage temperature // must be <= 100. 
    private float minTemp; private float maxTemp; 
    int getCalories() { 
     return calPerServing; 
    } 
} 

,我有與分配的這部分故障:

寫構造方法對於Food類,設置默認name"Pie",默認calPerServing500,默認minTemp25和默認maxTemp75

如何設置name,calPerServing等的默認值?

private String name = "Pie"; 
private int calPerServing = 500; 

,所以它:

+0

只需嘗試一些代碼,如果您失敗,請在此處查詢體驗。 –

回答

4

(我很驚訝去三個搜索結果頁面沒有找到這個問題的簡單版本指向。)


您有設置一個實例變量的缺省值兩種選擇(有時稱爲「實例字段」):

  1. 使用I關於申報的硝化劑。

  2. 在構造函數中使用賦值。

說我有一個類Example和實例變量answer其默認應該42.我可以:

// Example of #1 (initializer) 
class Example { 
    private int answer = 42; 
    // ... 
} 

// Example of #2 (assignment within constructor) 
class Example { 
    private int answer; 

    Example() { 
     this.answer = 42; 
    } 
} 

初始值設定處理(#1)在構造函數中的任何其他邏輯之前(但在調用超類構造函數之後)構造期間。

您使用哪一種取決於班級以及某種程度上的個人風格。如果這個類將有多個構造函數,但我希望answer默認爲42,而不管使用哪個構造函數,使用初始化是有意義的,因爲然後我只把它放在一個地方而不是放在每個構造函數中。如果answer的默認值根據使用哪個構造函數而不同,或者取決於構造函數接收/接收的參數,則在構造函數中設置它是有意義的。

在您的具體情況下,分配會告訴您使用構造函數。

+0

有時最簡單的問題沒有答案。我發現自己處於同樣的狀況。大聲笑... – BlackHatSamurai

0

如果要設置默認值,只需在聲明變量像這樣分配一個值。如果你想覆蓋這些變量,你可以。另外,您也可以做到這一點在構造函數中,像這樣:

class Food { 
    private String name; // name of food 
    private int calPerServing; // 

    public Food(){ 
     this.name = "Pie"; 
     this.calPerServing = 500; 
    } 

}