在Java应用程序中我需要多少个构造函数?

时间:2018-05-19 14:31:44

标签: java constructor

所以,如果我有public class名为'X',它有5个变量。我是否必须为每个变量组合编写构造函数?我的教导并没有为我澄清这一点,但我认为这不是必要的,因为应用程序可能太重(或不是?),但否则这会增加应用程序的灵活性。

提前谢谢。

3 个答案:

答案 0 :(得分:4)

取决于。

五个实例变量并不是我所见过的很多,所以采用5参数的构造函数不会是世界上最糟糕的事情。如您所知,Java允许您在单个类中拥有多个构造函数,因此您可以基本上重载带有5参数的构造函数,其中一个参数为某些参数提供默认值,例如:

public Test(int a, int b, String c, long d, float e) {
    this.a = a;
    this.b = b;
    this.c = c;
    this.d = d;
    this.e = e;
}

public Test(int a, int b) {
    this(a, b, "Test", 0L, 3.14F);
}

如果您只想在实例化对象时初始化某些实例变量而不是所有实例变量,也可以查看Builder Pattern

答案 1 :(得分:1)

如果需要,您可以不提供任何公共构造函数。

使用Java,您可以使用多个构造函数来实现对象初始化的正确行为。它们的数量来自可能的真实场景。如果是最后两个参数是可选的,或者可以从之前的参数估计,提供这样的构造函数。

您还可以使用this()的一些技巧,如下所示:

<span class="word word-this" id="word-#" aria-hidden="true">this</span>

答案 2 :(得分:1)

在定义构造函数时,我问自己哪些是我需要的最小信息才能拥有该类的工作实例。例如,类java.io.File有4个构造函数,它们都采用文件的路径。没有空构造函数,因为没有路径或文件系统位置的文件没有意义。

现在对于类Bike,您可能想要定义一个空的构造函数,该构造函数使用标准的自行车属性初始化实例:2个轮子等。然后让setter根据需要进行自定义。