Java 类实例化顺序:子类和父类的执行流程

在 Java 中,当我们实例化一个子类对象时,其内部代码的执行顺序并非简单地按照代码的书写顺序,而是遵循一个固定的规则。

实例化顺序如下:

  1. D. 子类静态代码块: 首先执行子类中的静态代码块。静态代码块只在类加载时执行一次,且执行顺序在构造器之前。
  2. C. 父类静态代码块: 接着执行父类中的静态代码块。同样,父类静态代码块也只执行一次。
  3. E. 父类构造代码块: 在父类构造器执行之前,会执行父类中的构造代码块。构造代码块在每次创建对象时都会执行。
  4. A. 父类构造器: 然后执行父类的构造器。构造器用于初始化对象,并确保对象处于可使用状态。
  5. F. 子类构造代码块: 在子类构造器执行之前,会执行子类中的构造代码块。
  6. 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

注意:

  • 静态代码块只执行一次,在类加载时执行。
  • 构造代码块在每次创建对象时都会执行。
  • 构造器用于初始化对象。
  • 子类继承父类的所有成员,包括静态代码块、构造代码块和构造器。
  • 子类的构造器会隐式调用父类的构造器。
Java 类实例化顺序:子类和父类的执行流程

原文地址: https://www.cveoy.top/t/topic/owou 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录