java如何调用父类的构造器

java如何调用父类的构造器

作者:Rhett Bai发布时间:2026-02-13阅读时长:0 分钟阅读次数:2

用户关注问题

Q
在Java中如何在子类构造器中调用父类的构造函数?

我在写Java类的继承时,想在子类的构造器中使用父类的构造函数,该怎么实现?

A

使用super关键字调用父类构造器

在Java中,可以使用super关键字在子类的构造器中调用父类的构造函数。调用super时必须是子类构造器中的第一条语句。比如:

public class Parent {
public Parent(String name) {
// 父类构造器逻辑
}
}

public class Child extends Parent {
public Child(String name) {
super(name); // 调用父类构造器
// 子类构造器逻辑
}
}

Q
如果父类没有无参构造器,子类应该如何调用父类的有参构造器?

父类只有带参数的构造函数,没有默认的无参构造器,子类该如何正确调用父类构造器?

A

必须显式调用父类的有参构造器

当父类没有无参构造器时,子类必须在自己的构造器中使用super并传入相应参数来调用父类的有参构造器,否则编译会失败。示例代码如下:

public class Parent {
public Parent(int age) {
// 父类构造器
}
}

public class Child extends Parent {
public Child(int age) {
super(age); // 必须调用父类的有参构造器
}
}

Q
能否在子类构造器中调用父类的多个不同构造器?

Java中父类有多个重载构造器,子类怎么选择调用哪个父类构造器?

A

根据需要使用super传递不同参数调用不同构造器

父类如果有多个重载构造器,子类可以在构造器中通过super关键字根据传入的参数类型和数量选择调用对应的父类构造器。例如,父类有无参和带参数构造器,子类调用super()或super(参数)即可实现不同构造器的调用。