java 子类构造函数 一定要super父类
时间: 2025-06-22 09:37:31 浏览: 17
### Java 子类构造函数调用父类构造函数的要求
当创建子类对象时,默认情况下会自动调用无参的父类构造函数。然而,如果希望显式地调用带有参数的父类构造函数,则需通过 `super()` 来实现这一点,并且此调用必须位于子类构造器的第一条语句[^1]。
#### 显式调用父类构造函数规则
- 如果不提供任何`super`调用,编译器默认会在子类构造器内部插入一条对父类无参构造器的隐式调用。
- 若要调用有参版本的父类构造器,应在子类构造器内首行放置形式为`super(参数列表)` 的表达式。
- 当定义了多个重载的父类构造器时,可以通过传递不同数量或类型的实参给`super`来指定要调用的具体构造器。
- 若子类本身也有带参数的构造器,应确保这些构造器中的每一个都适当地初始化其超类部分。
#### 示例代码展示
下面是一个简单的例子展示了如何在一个子类中正确地使用`super`关键字:
```java
class Parent {
String name;
// 无参构造函数
public Parent(){
this.name = "default";
}
// 带参构造函数
public Parent(String name){
this.name = name;
}
}
class Child extends Parent {
int age;
// 使用 super() 调用父类无参构造函数
public Child(){
super();
System.out.println("Child default constructor called.");
}
// 使用 super(name) 调用父类带参构造函数
public Child(String name, int age){
super(name);
this.age = age;
System.out.println("Child parameterized constructor called with name and age");
}
}
```
在这个例子中,`Child` 类有两个构造函数:一个是默认构造函数它调用了父类的无参构造函数;另一个接受两个参数并利用它们分别设置父类成员变量以及自身的属性。
阅读全文
相关推荐


















