
java如何调用父类的构造器
用户关注问题
在Java中如何在子类构造器中调用父类的构造函数?
我在写Java类的继承时,想在子类的构造器中使用父类的构造函数,该怎么实现?
使用super关键字调用父类构造器
在Java中,可以使用super关键字在子类的构造器中调用父类的构造函数。调用super时必须是子类构造器中的第一条语句。比如:
public class Parent {
public Parent(String name) {
// 父类构造器逻辑
}
}
public class Child extends Parent {
public Child(String name) {
super(name); // 调用父类构造器
// 子类构造器逻辑
}
}
如果父类没有无参构造器,子类应该如何调用父类的有参构造器?
父类只有带参数的构造函数,没有默认的无参构造器,子类该如何正确调用父类构造器?
必须显式调用父类的有参构造器
当父类没有无参构造器时,子类必须在自己的构造器中使用super并传入相应参数来调用父类的有参构造器,否则编译会失败。示例代码如下:
public class Parent {
public Parent(int age) {
// 父类构造器
}
}
public class Child extends Parent {
public Child(int age) {
super(age); // 必须调用父类的有参构造器
}
}
能否在子类构造器中调用父类的多个不同构造器?
Java中父类有多个重载构造器,子类怎么选择调用哪个父类构造器?
根据需要使用super传递不同参数调用不同构造器
父类如果有多个重载构造器,子类可以在构造器中通过super关键字根据传入的参数类型和数量选择调用对应的父类构造器。例如,父类有无参和带参数构造器,子类调用super()或super(参数)即可实现不同构造器的调用。