????????如何在 Java 中从另一个构造函数调用一个构造函数或什么是 Java 中的构造函数链是Java 面试中棘手的问题之一。那么,如果您想从基类或超类调用构造函数,则可以使用此关键字从同一类的另一个构造函数调用一个构造函数,那么您可以使用?super关键字。从一个构造函数调用另一个构造函数称为Java 中的构造函数链。构造函数可以使用this()和super()关键字自动或显式地相互调用。this()表示同一个类的无参构造函数, super()表示父类的无参或默认构造函数。在同一个类中拥有多个构造函数也称为Java 中的构造函数重载。
/**
* Java 程序演示如何在 Java 中链接构造函数。
* 当一个构造函数在 Java 中调用另一个构造函数时,称为构造函数链。
* this 和 super 关键字用于从另一个构造函数调用一个构造函数。
*/
public class ConstructorChaining {
public static void main(String[] args) {
// 测试 Java Derived 中的构造函数链
Derived sub = new Derived("Test");
}
}
class Base {
protected String name;
public Base() {
this(""); // 调用同一类的一个参数构造函数
System.out.println("基类的无参构造函数内部");
}
public Base(String name) {
this.name = name;
System.out.println("基类的一个参数构造函数");
}
}
class Derived extends Base {
public Derived() {
System.out.println("派生类的无参构造函数内部");
}
public Derived(String name) {
super(name); // 调用基类的一个参数构造函数
System.out.println("派生类的一个参数构造函数内部");
}
}
输出
Base类的一个参数构造函数
派生类的一个参数构造函数内部
在此示例中,我们通过调用接受String 参数的派生类的构造函数来创建派生类的实例,该构造函数然后类化为超类的一个参数构造函数。这是一个在 Java 中显式调用另一个构造函数的示例。为了演示自动构造函数链接,让我们看另一个例子
Derived sub = new Derived();
输出
Base类的一个参数构造函数
Base类的无参数构造函数内部
派生类的无参数构造函数内部
?