稍后如何在此处初始化final?

时间:2020-09-28 07:31:54

标签: java oop final

所以在读书时,我遇到了这段代码。

public class NutritionFacts {
private final int servingSize; // (mL) required
private final int servings; // (per container) required
private final int calories; // (per serving) optional
private final int fat; // (g/serving) optional
private final int sodium; // (mg/serving) optional
private final int carbohydrate; // (g/serving) optional
public NutritionFacts(int servingSize, int servings) {
this(servingSize, servings, 0);
}

public NutritionFacts(int servingSize, int servings,
int calories) {
this(servingSize, servings, calories, 0);
}

public NutritionFacts(int servingSize, int servings,
int calories, int fat) {
this(servingSize, servings, calories, fat, 0);
}

public NutritionFacts(int servingSize, int servings,
int calories, int fat, int sodium) {
this(servingSize, servings, calories, fat, sodium, 0);
public NutritionFacts(int servingSize, int servings,
int calories, int fat, int sodium, int carbohydrate) {
this.servingSize = servingSize;
this.servings = servings;
this.calories = calories;
this.fat = fat;
this.sodium = sodium;
this.carbohydrate = carbohydrate;
}
}

因此,在这里,最终关键字在营养名称之前使用。但是它们也在代码的后面部分中初始化。那可能吗?因为一旦将变量标记为final,就无法在以后初始化。

1 个答案:

答案 0 :(得分:0)

final关键字表示属性值只能设置一次。这是这种情况,因为您仅在构造函数中设置了值。因此,这是有效的代码。