[英]Constructor inheritance
public A {
public A(String arg0) {
...
}
public A(String arg0, String arg1) {
...
}
}
public B extends A {
}
我希望B自动从A继承构造函数,而不必像下面这样显式实现它们:
public B(String arg0) {
super(arg0);
}
public B(String arg0, String arg1) {
super(arg0, arg1);
}
我该如何实现?
你不能 构造函数不是继承的。 在父类上仅自动调用默认的一个,但仍不会“继承”。
除非显式调用构造函数,并且提供的超类具有默认构造函数,否则编译器将自动在每个构造函数中添加对默认构造函数“ super()”的调用。
而且,如果一个类没有显式定义构造函数,则编译器将提供一个默认的空构造函数,如前所述,它调用了super()默认构造函数。
这就是为什么“看起来”默认构造函数为“继承”的原因,但这只是一个编译器技巧。
构造函数声明不是成员。 它们永远不会被继承,因此不会被隐藏或覆盖。
您不能 。因为不能在子类中继承构造函数。如果我们在类中不编写任何构造函数,则会提供默认的构造函数。通过使用super关键字,我们可以调用父类构造函数,但有一个条件,即它不支持成为子构造函数中的第一条语句。
你不能 构造函数不是在类之间继承的,每个子类构造函数都必须调用超类构造函数作为其第一个操作(显式或隐式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.