java - 如何为实例变量设置默认值?

标签 java object set

在我的作业中,我得到了一个像这样的 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 default name to "Pie", the default calPerServing to 500, the default minTemp to 25, and the default maxTemp to 75.

如何为 namecalPerServing 等设置默认值?

最佳答案

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


设置实例变量(有时称为“实例字段”)的默认值有两种选择:

  1. 在声明中使用初始化器。

  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) 在构造过程中处理,就在构造函数中的任何其他逻辑之前(但在调用父类(super class)构造函数之后)。

您使用哪种取决于类(class),并在一定程度上取决于个人风格。如果该类将有多个构造函数,但我希望 answer 默认为 42,而不管使用哪个构造函数,使用初始化是有意义的,因为这样我就把它放在一个地方,而不是把它放在每个地方构造函数。如果 answer 的默认值会根据使用的构造函数或构造函数接收/接收的参数而有所不同,那么在构造函数中设置它是有意义的。

在您的特定情况下,赋值会告诉您使用构造函数。

关于java - 如何为实例变量设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43509987/

相关文章:

java - GWT 客户端 bundle !重要

Java JDBC数据库连接登录

java - MyBatis 中的多种返回类型?

javascript - 在 rxjs 中使用 .map() 添加属性

java - 我想通过在其类中定义的变量按字母顺序排列对象

Java设置差异,我可以使用java对象还是数据库?

java - 在 Java 中没有重复且随机顺序的集合

java - Hibernate/JPA 使用标准作为注释

javascript - 分隔 JSON 对象的值

c++ - 存储一组指针会导致未定义的行为吗?