在我的作业中,我得到了一个像这样的 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; } }
我在完成这部分作业时遇到了问题:
Write a constructor method for the
Food
class, to set the defaultname
to"Pie"
, the defaultcalPerServing
to500
, the defaultminTemp
to25
, and the defaultmaxTemp
to75
.
如何为 name
、calPerServing
等设置默认值?
最佳答案
(我很惊讶地看到搜索结果的第三页却没有找到要指向的这个问题的简单版本。)
设置实例变量(有时称为“实例字段”)的默认值有两种选择:
在声明中使用初始化器。
在构造函数中使用赋值。
假设我有一个类 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) 在构造过程中处理,就在构造函数中的任何其他逻辑之前(但在调用父类(super class)构造函数之后)。
您使用哪种取决于类(class),并在一定程度上取决于个人风格。如果该类将有多个构造函数,但我希望 answer
默认为 42,而不管使用哪个构造函数,使用初始化是有意义的,因为这样我就把它放在一个地方,而不是把它放在每个地方构造函数。如果 answer
的默认值会根据使用的构造函数或构造函数接收/接收的参数而有所不同,那么在构造函数中设置它是有意义的。
在您的特定情况下,赋值会告诉您使用构造函数。
关于java - 如何为实例变量设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509987/