在我的任务中,我给了Food这样一个课:
Run Code Online (Sandbox Code Playgroud)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",默认calPerServing值为500,默认minTemp值为25,默认maxTemp值为75.
我要如何设置默认值name,calPerServing等等?
(我很惊讶地发现搜索结果的第三页没有找到这个问题的简单版本指出.)
您有两种选择来设置实例变量的默认值(有时称为"实例字段"):
在声明中使用初始化程序.
在构造函数中使用赋值.
假设我有一个类Example和一个实例变量,answer其默认值应为42.我可以:
// Example of #1 (initializer)
class Example {
private int answer = 42;
// ...
}
Run Code Online (Sandbox Code Playgroud)
要么
// Example of #2 (assignment within constructor)
class Example {
private int answer;
Example() {
this.answer = 42;
}
}
Run Code Online (Sandbox Code Playgroud)
初始化器(#1)在构造期间的任何其他逻辑之前(但在调用超类构造函数之后)处理.
您使用哪种取决于课程,在某种程度上取决于个人风格.如果该类将具有多个构造函数但我想要answer默认为42而不管使用哪个构造函数,使用初始化是有意义的,因为我只是把它放在一个地方而不是把它放在每个构造函数中.如果默认值answer取决于使用的构造函数,或者取决于构造函数接收/接收的参数,则在构造函数中设置它是有意义的.
在您的特定情况下,赋值会告诉您使用构造函数.