如何设置实例变量的默认值?

问题描述:

在我的任务,我给一个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

只需尝试一些代码,如果您失败,请在此处查询体验。 –

(我很惊讶去三个搜索结果页面没有找到这个问题的简单版本指向。)


您有设置一个实例变量的缺省值两种选择(有时称为“实例字段”):

  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

如果要设置默认值,只需在声明变量像这样分配一个值。如果你想覆盖这些变量,你可以。另外,您也可以做到这一点在构造函数中,像这样:

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

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

}