请注意:
类中拥有私有构造函数会告诉编译器不要提供默认的无参数构造函数。
私有构造函数无法实例化。
this() 必须是构造函数中第一个未注释的语句。评论并不重要,任何地方都允许评论。
Java中的构造函数重载是指在一个实例类中使用多个构造函数。但是,每个重载的构造函数必须具有不同的签名。为了编译成功,每个构造函数必须包含不同的参数列表。
同一个类中可以有多个构造函数,只要它们具有不同的方法签名即可。重载方法时,方法名和参数列表需要匹配。对于构造函数,名称始终相同,因为它必须与类的名称相同。构造函数必须具有不同的参数才能重载。
public class Hamster { private String color; private int weight; public Hamster(int weight) { // first constructor this.weight = weight; color = "brown"; } public Hamster(int weight, String color) { // second constructor this.weight = weight; this.color = color; } }
在上面,其中一个构造函数采用单个 int 参数。另一个需要一个 int 和一个 String。这些参数列表不同,所以构造函数重载成功。
但这里有一个问题。有一点重复。我们真正想要的是第一个构造函数用
调用第二个构造函数
两个参数。
构造函数链
这是重载构造函数相互调用的时候。一种常见的技术是让每个
构造函数添加一个参数,直到到达完成所有工作的构造函数。
public class Mouse { private int numTeeth; private int numWhiskers; private int weight; public Mouse(int weight) { this(weight, 16); // calls constructor with 2 parameters } public Mouse(int weight, int numTeeth) { this(weight, numTeeth, 6); // calls constructor with 3 parameters } public Mouse(int weight, int numTeeth, int numWhiskers) { this.weight = weight; this.numTeeth = numTeeth; this.numWhiskers = numWhiskers; } public void print() { System.out.println(weight + " " + numTeeth + " " + numWhiskers); } public static void main(String[] args) { Mouse mouse = new Mouse(15); mouse.print(); } }
结果:15 16 6
main() 方法使用一个参数调用构造函数。该构造函数添加第二个硬编码值并使用两个
调用构造函数
参数。该构造函数添加了一个硬编码值并调用构造函数
具有三个参数。三参数构造函数分配实例变量。
当你想调用构造函数时使用构造函数链
在另一个构造函数中。
重载和链接的综合好处
构造函数重载和链接共同提供了灵活性、效率和可维护的代码。重载允许您支持各种初始化场景,而链接可确保您可以集中共享逻辑并减少冗余。
以上是重载构造函数和构造函数链。的详细内容。更多信息请关注PHP中文网其他相关文章!