Java 子类调用父类构造方法详解
在 Java 中,子类继承父类,并可以调用父类的构造方法。下面我们详细分析子类调用父类构造方法的机制:
1. 子类构造方法的执行顺序
- 首先,子类对象创建时,会自动调用父类的无参构造方法,即使子类构造方法中没有显式使用
super()调用父类构造方法。 - 接着,子类会执行自己的构造方法。
2. 使用 super() 调用父类构造方法
- 子类可以在自己的构造方法中使用
super()显式调用父类的构造方法,并指定参数。 - 如果子类构造方法中没有使用
super(),编译器会自动在子类构造方法的第一行添加super(),默认调用父类的无参构造方法。
3. 常见错误理解
- 错误理解 A: 子类会先调用父类中无参构造方法,再调用子类自己的构造方法。
- 正确理解: 子类构造方法的执行顺序是:父类无参构造方法 -> 子类构造方法。
- 错误理解 B: 创建子类对象时,先调用子类自己的构造方法,然后再调用父类的无参构造方法。
- 正确理解: 子类构造方法的执行顺序是:父类无参构造方法 -> 子类构造方法。
- 错误理解 C: 子类定义了自己的构造方法,就不能调用父类的构造方法。
- 正确理解: 子类定义了自己的构造方法,仍然可以通过
super()调用父类的构造方法。
- 正确理解: 子类定义了自己的构造方法,仍然可以通过
4. 代码示例
class Parent {
Parent() {
System.out.println("Parent 无参构造方法");
}
Parent(String name) {
System.out.println("Parent 有参构造方法: " + name);
}
}
class Child extends Parent {
Child() {
super("Child"); // 调用父类的有参构造方法
System.out.println("Child 无参构造方法");
}
Child(int age) {
System.out.println("Child 有参构造方法: " + age);
}
}
public class Main {
public static void main(String[] args) {
Child child1 = new Child(); // 调用 Child 无参构造方法,会先调用 Parent 有参构造方法
Child child2 = new Child(10); // 调用 Child 有参构造方法
}
}
总结:
- 子类在创建对象时会自动调用父类的无参构造方法。
- 子类可以在自己的构造方法中使用
super()显式调用父类的构造方法。 - 子类定义了自己的构造方法,仍然可以调用父类的构造方法。
希望本文能够帮助你更好地理解子类调用父类构造方法的机制。
原文地址: https://www.cveoy.top/t/topic/nwsi 著作权归作者所有。请勿转载和采集!