Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数是否必须使用传递给它的所有参数?_Java_Oop_Constructor - Fatal编程技术网

Java 构造函数是否必须使用传递给它的所有参数?

Java 构造函数是否必须使用传递给它的所有参数?,java,oop,constructor,Java,Oop,Constructor,构造函数是否必须使用传递给它的所有参数 例如:如果传递了三个参数来构造新对象,那么必须分配所有参数吗 提前谢谢 当然。在Java中,构造函数毕竟是一种方法调用;所有参数都必须有一个值。当然。在Java中,构造函数毕竟是一种方法调用;所有参数都必须有一个值。通常情况下,没有。但是如果您接受一个参数而不使用它,为什么会有它?例如: class Foo { public Foo(int w, int h) { width = w; height = 10;

构造函数是否必须使用传递给它的所有参数

例如:如果传递了三个参数来构造新对象,那么必须分配所有参数吗


提前谢谢

当然。在Java中,构造函数毕竟是一种方法调用;所有参数都必须有一个值。

当然。在Java中,构造函数毕竟是一种方法调用;所有参数都必须有一个值。

通常情况下,没有。但是如果您接受一个参数而不使用它,为什么会有它?例如:

class Foo {
    public Foo(int w, int h) {
        width = w;
        height = 10;
    }
    private int width;
    private int height;
}

在构造函数中,不使用
h
。它可以从构造函数参数列表中删除。

一般来说,不可以。但是,如果您接受一个参数而不使用它,为什么它会存在?例如:

class Foo {
    public Foo(int w, int h) {
        width = w;
        height = 10;
    }
    private int width;
    private int height;
}

在构造函数中,不使用
h
。它可以从构造函数参数列表中删除。

从技术上讲-您不必分配所有传递的参数

但更重要的问题是——如果它们未被使用,为什么要首先传递它们

更新

假设您有这个类:-

public final class SomeClazz {
    private final int foo;
    public SomeClazz(int foo,int bar){
        this.foo = foo;
    }
}
您可以这样调用它:-

SomeClazz clazz = new SomeClazz(2,4);

这没有技术问题,但正如我上面提到的,让一个构造函数接受2个参数但不使用它是没有意义的。在这种情况下,您应该创建一个只接受一个参数的构造函数。否则,您将误导调用应用程序,使其认为两个参数都用于创建对象。

从技术上讲-您不必指定所有传递的参数

但更重要的问题是——如果它们未被使用,为什么要首先传递它们

更新

假设您有这个类:-

public final class SomeClazz {
    private final int foo;
    public SomeClazz(int foo,int bar){
        this.foo = foo;
    }
}
您可以这样调用它:-

SomeClazz clazz = new SomeClazz(2,4);

这没有技术问题,但正如我上面提到的,让一个构造函数接受2个参数但不使用它是没有意义的。在这种情况下,您应该创建一个只接受一个参数的构造函数。否则,您将误导调用应用程序,使其认为两个参数都用于创建对象。

构造函数不必使用所有参数。不使用所有参数会引发一个有趣的问题,即为什么不使用所有参数。这个答案假设您的意思是不使用所有传入的参数。

构造函数不需要使用所有参数。不使用所有参数会引发一个有趣的问题,即为什么不使用所有参数。这个答案假设您的意思是不使用所有传入的参数。

构造函数与Java中的任何方法一样,不必使用其所有参数。不过,对构造函数的调用需要为所有声明的参数提供值。

与Java中的任何方法一样,构造函数不必使用其所有参数。但是,调用构造函数需要为所有声明的参数提供值。

简短的回答是否。构造函数与任何方法一样,不必使用传递给它的所有内容。然而,构造函数的目的是“设置”对象,因此不使用参数似乎毫无意义。如果有时担心可能会使用参数,请重载构造函数。

简单的答案是否定的。构造函数与任何方法一样,不必使用传递给它的所有内容。然而,构造函数的目的是“设置”对象,因此不使用参数似乎毫无意义。如果有时担心可能会使用参数,请重载构造函数。

这取决于类的设计,下面列出了可能的影响:

1) 构造函数将崩溃并引发异常 2) 构造函数不会崩溃,但是当您调用类的方法时。 3) 构造函数不会崩溃,但您可能无法为属性赋值,因为它被标记为只读

如果你是这个类的所有者,我的建议是太多的用户重载构造函数


这取决于课程的设计,下面列出了可能产生的影响:

1) 构造函数将崩溃并引发异常 2) 构造函数不会崩溃,但是当您调用类的方法时。 3) 构造函数不会崩溃,但您可能无法为属性赋值,因为它被标记为只读

如果你是这个类的所有者,我的建议是太多的用户重载构造函数


那么,假设我有以下内容:公共类ObjectA;公共对象A(param1){someInstanceVar=param1;}公共类对象B扩展对象A;public ObjectB(param1,param2,param3){super(param1);//我必须在这里处理param2和param3吗?}你说“当然”,但是。。。您不必在所有语言中都使用它们。不一定总是这样。@OOProg您不必在构造函数中“使用”它们(与方法相同),但这提出了一个问题:如果您没有使用参数,为什么会有它?@Etienne如果他问这个问题,很可能是因为他不必使用其他语言,但是现在在Java中,我想知道这里的规则是什么;公共对象A(param1){someInstanceVar=param1;}公共类对象B扩展对象A;public ObjectB(param1,param2,param3){super(param1);//我必须在这里处理param2和param3吗?}你说“当然”,但是。。。您不必在所有语言中都使用它们。不一定总是这样。@OOProg您不必在构造函数中“使用”它们(与方法相同),但这提出了一个问题:如果您没有使用参数,为什么会有它?@Etienne如果他问这个问题,很可能是因为他不必使用其他语言,但是现在是Java,我想知道规则是什么