Java 子类继承父类构造方法339


在 Java 中,子类可以继承父类的构造方法,从而在创建子类对象时初始化父类的成员变量。这有助于确保父类的状态在创建子类对象时得到正确初始化。

使用 super() 调用父类构造方法

要从子类构造方法中调用父类构造方法,需要使用 super() 关键字。这必须作为子类构造方法的第一条语句,后面跟着要调用的父类构造方法的参数。例如:```java
class Parent {
private int age;
public Parent(int age) {
= age;
}
}
class Child extends Parent {
private String name;
public Child(String name, int age) {
super(age); // 调用父类的构造方法
= name;
}
}
```

在上面的示例中,Child 类继承了 Parent 类的 age 字段,并且还添加了 name 字段。在 Child 类的构造方法中,super(age) 调用了 Parent 类的构造方法,传递 age 参数,以便在创建 Child 对象时正确初始化 age 字段。

在子类中重写父类构造方法

子类也可以重写父类的构造方法。这允许子类在创建对象时提供自己的特定的初始化逻辑。但是,重写的构造方法必须具有与父类构造方法相同的签名(参数列表和异常)。例如:```java
class Parent {
private int age;
public Parent(int age) {
= age;
}
}
class Child extends Parent {
private String name;
public Child(String name) {
super(0); // 调用父类的无参构造方法
= name;
}
}
```

在上面的示例中,Child 类重写了 Parent 类的构造方法。重写的构造方法不接受 age 参数,而是调用父类的无参构造方法(super(0))来初始化 age 字段。另外,它设置了 name 字段,该字段是子类特有的。

注意与 this() 调用的区别

注意 super() 和 this() 调用的区别。super() 用于调用父类的构造方法,而 this() 用于调用当前类的另一个构造方法。例如:```java
class Parent {
private int age;
public Parent(int age) {
= age;
}
}
class Child extends Parent {
private String name;
public Child(String name, int age) {
this(name); // 调用当前类的另一个构造方法
= age; // 手动设置 age 字段
}
public Child(String name) {
super(0); // 调用父类的无参构造方法
= name;
}
}
```

在上面的示例中,Child 类的 Child(String name, int age) 构造方法调用了 this(name) 以调用另一个与当前类同名的构造方法。这个其他构造方法又调用了父类的无参构造方法(super(0))。然后,它手动设置 age 字段。这是在某些情况下可能需要的,例如当子类需要在创建对象后立即修改父类字段时。

在 Java 中,子类可以继承父类的构造方法,以确保父类状态在创建子类对象时得到正确初始化。子类也可以重写父类的构造方法,以提供自己的特定的初始化逻辑。理解 super() 和 this() 调用的区别对于在使用继承时编写健壮的代码至关重要。

2024-10-29


上一篇:Java 中使用 for 循环遍历数组

下一篇:Java 中的 Unicode 字符