子类构造方法必须通过super()调用父类构造方法以确保正确初始化。1. 若未显式调用且父类含无参构造,Java自动插入super()。2. 若父类无无参构造或需调用带参构造,子类必须显式使用super(参数)。3. super()须位于子类构造方法首行,且不能与this()共存,否则编译失败。若父类无无参构造而子类未显式调用super,将导致编译错误。

在Java中,调用父类构造方法使用 super() 关键字。子类必须通过 super() 显式或隐式地调用父类的构造方法,以确保父类部分被正确初始化。
1. 隐式调用父类无参构造方法
如果子类构造方法中没有显式写 super(),且父类有无参构造方法,Java 会自动插入 super() 调用父类的无参构造方法。示例:
立即学习“Java免费学习笔记(深入)”;
class Animal {Animal() {
System.out.println("Animal 构造方法");
}
}
class Dog extends Animal {
Dog() {
// 自动调用 super()
System.out.println("Dog 构造方法");
}
}
输出:
Animal 构造方法Dog 构造方法
2. 显式调用父类带参构造方法
如果父类没有无参构造方法,或你想调用带参数的构造方法,必须在子类构造方法的第一行使用 super(参数) 显式调用。示例:
立即学习“Java免费学习笔记(深入)”;
class Person {Person(String name) {
System.out.println("Person: " + name);
}
}
class Student extends Person {
Student(String name, int age) {
super(name); // 必须显式调用
System.out.println("Student 年龄: " + age);
}
}
3. 注意事项
调用父类构造方法时需遵守以下规则:- super() 必须出现在子类构造方法的第一行,否则编译报错。
- 一个构造方法中不能同时出现 this() 和 super(),因为两者都必须在第一行。
- 如果父类没有无参构造方法,而子类又没显式调用 super(...),会编译错误。
基本上就这些。只要记住:子类构造器要先“帮”父类完成初始化,靠的就是 super()。写的时候注意位置和参数匹配就行。










