我现在正在学习 Java,并且刚刚了解了构造函数是什么。我不明白如果需要初始化所有变量,为什么需要多个构造函数。
原文由 Tren46 发布,翻译遵循 CC BY-SA 4.0 许可协议
我现在正在学习 Java,并且刚刚了解了构造函数是什么。我不明白如果需要初始化所有变量,为什么需要多个构造函数。
原文由 Tren46 发布,翻译遵循 CC BY-SA 4.0 许可协议
简而言之,您使用多个构造函数是为了方便(第一个示例)或允许完全不同的初始化方法或不同的源类型(第二个示例。
您可能需要多个构造函数来实现您的类,以简单地允许省略一些已经设置的参数:
//The functionality of the class is not important, just keep in mind parameters influence it.
class AirConditioner{
enum ConditionerMode{
Automatic, //Default
On,
Off
}
public ConditionerMode Mode; //will be on automatic by default.
public int MinTemperature = 18;
public int MaxTemperature = 20;
public AirConditioner(){ //Default constructor to use default settings or initialize manually.
//Nothing here or set Mode to Automatic.
}
//Mode
public AirConditioner(ConditionerMode mode){ //Setup mode, but leave the rest at default
Mode = mode;
}
//setup everything.
public AirConditioner(ConditionerMode mode, int MinTemp, int MaxTemp){
Mode = mode;
MinTemperature = MinTemp;
MaxTemperature = MaxTemp;
}
}
另一个例子是当不同的构造函数遵循不同的过程来初始化变量时。例如,您可以有一个只显示文本表的数据表。构造函数可以从数据库或文件中获取数据:
class DataTable{
public DataTable(){} //Again default one, in case you want to initialize manually
public DataTable(SQLConnection con, SQLCommand command){
//Code to connect to database get the data and fill the table
}
public DataTable(File file){
//Code to read data from a file and fill the table
}
}
原文由 Zero 发布,翻译遵循 CC BY-SA 3.0 许可协议
8 回答6.4k 阅读
1 回答4.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
一个类可以有多个构造函数,只要它们的签名(它们采用的参数)不相同即可。您可以根据需要定义任意数量的构造函数。当一个 Java 类包含多个构造函数时,我们说构造函数被重载(有多个版本)。这就是构造函数重载的意思,一个 Java 类包含多个构造函数。
话虽如此,是否要在类中创建多个构造函数完全取决于您的实现,但在许多情况下拥有多个构造函数可以让您的生活变得轻松。假设下面的类没有默认构造函数:
因此,在创建此类的对象时,用户只有手头有年龄和名称参数才能这样做,这限制了 Java 对象的真正功能,因为对象的状态应该能够在初始化后随时修改和填充。