在Java中,如果父类有参构造方法,子类有参构造方法不一定需要调用父类有参构造方法,但是如果不调用,父类的属性就无法被初始化。如果子类显式地调用了父类的有参构造方法,则必须使用super关键字来调用,否则编译器会默认调用父类的无参构造方法,初始化一个父类的对象。如果父类没有无参构造方法,子类必须显式地调用父类的有参构造方法。
public class Father {
private int age;
public Father(int age) {
this.age = age;
}
}
public class Son extends Father {
private String name;
public Son(int age, String name) {
super(age); // 必须显式调用父类的有参构造方法
this.name = name;
}
}