public class Country implements ICountry {
int stability = 2;
}
Country poland = new Country(stability = 3);
我要做的是使用具有一些默认值的新类(“Country”)扩展接口(ICountry)。我想知道在创建Country类的新实例时是否可以重新定义其中一些默认值。我的示例中的最后一行代码是我当前尝试完成此操作时的代码,但我的IDE警告我“稳定性无法解析为变量”。
我的问题是,在没有构建方法的情况下实例化类时,是否可以重新定义对象的某些默认值?
我刚刚开始自学Java和Android编程,所以如果你认为我提到了错误的术语,请纠正我。
答案 0 :(得分:3)
您想要的是定义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
您需要拥有两个构造函数的原因是,如果您没有参数,则会生成没有参数的版本(“默认”或“隐式”构造函数) t指定了一个,但是一旦指定了构造函数,它就不会再生成了。
默认构造函数的替代和等效语法可以是:
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没有它们。
答案 1 :(得分:0)
这是重载的构造函数的用途:
public Country(int stability)
{
this.stability=stability;
}