构造函数是否必须使用传递给它的所有参数?
例如:如果传递三个参数来构造一个新对象,是否必须分配所有参数?
提前致谢!
答案 0 :(得分:4)
技术上否 - 您不必分配所有传递的参数。
但更重要的问题是 - 为什么在未使用的情况下首先将它们传递给它?
<强>更新强>
我们假设您有这个课程: -
public final class SomeClazz {
private final int foo;
public SomeClazz(int foo,int bar){
this.foo = foo;
}
}
你用这种方式调用它: -
SomeClazz clazz = new SomeClazz(2,4);
这有没有技术问题,但正如我上面提到的那样,拥有一个带2个参数但不使用它的构造函数是没有意义的。在这种情况下,您应该创建一个只接受一个参数的构造函数。否则,你误导调用应用程序认为两个参数都被用于创建对象。
答案 1 :(得分:2)
一般来说,没有。但是如果你接受一个参数并且没有对它做任何事情,那为什么呢?例如:
class Foo {
public Foo(int w, int h) {
width = w;
height = 10;
}
private int width;
private int height;
}
在构造函数中,未使用h
。它可以从构造函数参数列表中删除。
答案 2 :(得分:2)
构造函数与Java中的任何方法一样,不必使用其所有参数。但是,对构造函数的调用需要为所有声明的参数提供值。
答案 3 :(得分:1)
构造函数不需要使用所有参数。不使用所有参数提出了一个有趣的问题,即为什么它们都没有被使用。这个答案假设您的意思是不使用所有传入的参数。
答案 4 :(得分:1)
简短的回答是否定的。与任何方法一样,构造函数不必使用传递给它的所有内容。然而,构造函数的目的是“设置”您的对象,因此不使用参数似乎毫无意义。如果您担心有时可能会使用参数,请重载构造函数。
答案 5 :(得分:0)
当然。在Java中,构造函数毕竟是一个方法调用;所有参数都必须有一个值。
答案 6 :(得分:0)
这将取决于类的设计,这里列出了可能的反响:
1)构造函数将崩溃并抛出异常 2)构造函数不会崩溃,但是当你调用类的方法时。 3)构造函数不会崩溃,但您可能无法为属性赋值,因为它被标记为只读。
如果您是该类的所有者,我的建议是用户重载的构造函数。