您想要的是定义一个Country
接受参数并将其分配给字段的构造函数,如下所示:
public class Country implements ICountry {
int stability = 2; // the default
public Country() {
// no parameters, no assignments
}
public Country(int stability) {
// declares parameter, assigns to field
this.stability = stability;
}
}
然后,您可以创建此类的多个实例,如下所示:
Country unitedKingdom = new Country(); // 2 is the value of stability, taken from the default
Country poland = new Country(3); // 3 is the value of stability
你需要有两个构造函数的原因是,如果你没有指定一个构造函数,没有参数的版本(“默认”或“隐式”构造函数)会生成,但是一旦你指定了一个构造函数,它就不会生成不再。
默认构造函数的另一种等效语法可能是:
public class Country implements ICountry {
int stability; // declare field, but don't assign a value here
public Country() {
this.stability = 2; // instead assign here, this is equivalent
}
}
此版本和以前版本的默认构造函数都产生相同的效果,但通常是偏好问题。
有些语言使用您展示的语法,它们被称为“命名参数”,但 Java 没有它们。