Java 类实例化顺序:子类和父类的执行流程
Java 类实例化顺序:子类和父类的执行流程
在 Java 中,当我们实例化一个子类对象时,其内部代码的执行顺序并非简单地按照代码的书写顺序,而是遵循一个固定的规则。
实例化顺序如下:
- D. 子类静态代码块: 首先执行子类中的静态代码块。静态代码块只在类加载时执行一次,且执行顺序在构造器之前。
- C. 父类静态代码块: 接着执行父类中的静态代码块。同样,父类静态代码块也只执行一次。
- E. 父类构造代码块: 在父类构造器执行之前,会执行父类中的构造代码块。构造代码块在每次创建对象时都会执行。
- A. 父类构造器: 然后执行父类的构造器。构造器用于初始化对象,并确保对象处于可使用状态。
- F. 子类构造代码块: 在子类构造器执行之前,会执行子类中的构造代码块。
- B. 子类构造器: 最后执行子类的构造器。
总结:
子类实例化的顺序可以概括为:子类静态代码块 -> 父类静态代码块 -> 父类构造代码块 -> 父类构造器 -> 子类构造代码块 -> 子类构造器。理解这个顺序对于我们理解面向对象编程的执行过程至关重要。
示例代码:
public class Father {
static {
System.out.println("Father static block");
}
{
System.out.println("Father instance block");
}
public Father() {
System.out.println("Father constructor");
}
}
public class Son extends Father {
static {
System.out.println("Son static block");
}
{
System.out.println("Son instance block");
}
public Son() {
System.out.println("Son constructor");
}
public static void main(String[] args) {
new Son();
}
}
运行结果:
Son static block
Father static block
Father instance block
Father constructor
Son instance block
Son constructor
注意:
- 静态代码块只执行一次,在类加载时执行。
- 构造代码块在每次创建对象时都会执行。
- 构造器用于初始化对象。
- 子类继承父类的所有成员,包括静态代码块、构造代码块和构造器。
- 子类的构造器会隐式调用父类的构造器。
原文地址: https://www.cveoy.top/t/topic/owou 著作权归作者所有。请勿转载和采集!