创建子类对象时,先执行父类静态成员,再执行子类静态成员,接着初始化父类实例成员并执行父类构造方法,最后初始化子类实例成员并执行子类构造方法。

在Java继承体系中,构造方法的调用顺序遵循明确的规则。当创建子类对象时,父类的构造方法会优先于子类的构造方法自动执行,确保父类成员被正确初始化。这一过程由super()调用驱动,理解其顺序对编写安全的面向对象代码至关重要。
1. 父类静态初始化块和静态变量先执行
如果类中包含静态成员或静态代码块,它们会在类加载时执行,且只执行一次。在继承关系中,父类的静态成员先于子类的静态成员初始化。
说明:静态内容与构造方法无关,但在对象创建前已按继承顺序执行完毕。2. 父类实例初始化依次进行
创建子类实例时,实际调用流程如下:
- 子类构造方法内部第一行隐式或显式调用
super() - 系统跳转到父类对应构造方法开始执行
- 父类中先执行实例初始化块和成员变量赋值
- 再执行父类构造方法体中的代码
super(...),编译器会自动插入super()调用父类无参构造。
3. 子类构造方法最后执行
只有当父类构造完全结束后,才会回到子类构造方法继续执行后续语句。
立即学习“Java免费学习笔记(深入)”;
- 子类的实例变量初始化和初始化块先于构造方法体运行
- 然后执行子类构造方法中的代码
基本上就这些。只要记住“从上到下,先静后动,父先子后”的原则,就能理清Java继承中构造方法的调用链条。不复杂但容易忽略细节,特别是默认super()的存在。










