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/1/typo3/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
Java 构造函数继承_Java - Fatal编程技术网

Java 构造函数继承

Java 构造函数继承,java,Java,我希望B自动从A继承构造函数,而不必显式实现它们,如: public A { public A(String arg0) { ... } public A(String arg0, String arg1) { ... } } public B extends A { } 我怎样才能做到这一点呢?你不能。构造函数不是继承的。在超类上只会自动调用默认类,但仍然不会“继承” 编译器将在每个构造函数中自动添加对默认构造函数“super()”的调用,除非显式调用构造函

我希望B自动从A继承构造函数,而不必显式实现它们,如:

public A {

  public A(String arg0) {
  ...
  }

  public A(String arg0, String arg1) {
  ...
  }

}

public B extends A {

}

我怎样才能做到这一点呢?

你不能。构造函数不是继承的。在超类上只会自动调用默认类,但仍然不会“继承”

编译器将在每个构造函数中自动添加对默认构造函数“super()”的调用,除非显式调用构造函数,并且前提是超类具有默认构造函数

此外,如果类没有显式定义构造函数,编译器将提供一个默认的空构造函数,正如前面所述,它调用super()默认构造函数


这就是为什么默认构造函数“看起来”是“继承的”,但这只是一个编译器技巧

你不能。构造函数不是在类之间继承的,每个子类构造函数都必须调用一个超类构造函数作为其第一个操作(显式或隐式)

来自:

构造函数声明不是成员。它们永远不会被继承,因此不会被隐藏或覆盖


您不能。因为构造函数不能在子类中继承。如果我们不在类中编写任何构造函数,则会提供默认构造函数。通过使用super关键字,我们可以调用父类构造函数,但有一个条件,即它应该是子构造函数中的第一条语句。

如果超类没有默认构造函数,编译器将给出错误原因,因为它无法插入“super()”调用,并要求显式调用其中一个非默认构造函数。还是我遗漏了什么?
public B(String arg0) {
    super(arg0);
}
public B(String arg0, String arg1) {
    super(arg0, arg1);
}