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