在 Java 继承中说明类加载和静态块

2025 年 6 月 19 日 | 阅读 3 分钟

在 Java 中,类加载是在程序中访问或引用一个类时发生的一个重要过程。当一个 Java 程序启动时,Java 虚拟机(JVM)会将重要的类定位并加载到内存中,这包括查找类的字节码、验证其正确性以及为其分配内存。

Java 继承允许类继承其父类的字段和方法。当加载一个子类时,JVM 还会加载其父类,以确保所有需要的类都可用以执行。

静态块在类加载过程中起着关键作用。静态块是用“static”关键字括起来的代码块,在类加载到内存时仅执行一次。它通常用于初始化静态变量或执行其他设置任务。

关于 Java 继承,静态块会按照特定的顺序执行。首先,执行父类的静态块,然后是子类的静态块。这确保了静态变量的初始化和设置任务按正确的顺序进行。

在静态块继承中,需要牢记以下规则:

  1. 静态块按照它们在代码层次结构中出现的顺序执行。
    • 当一个类被加载时。该类中的所有静态块都会首先完成,并按照它们的声明顺序执行。
    • 如果该类是超类,则超类的静态块将按相同的顺序执行。
    • 它确保静态块在类中的任何其他代码执行之前完成。
  2. 每个类只执行一次静态块。
    • 静态块在类加载到内存时执行,并且每个类只执行一次,无论创建了多少该类的实例。
    • 后续创建的类实例不会再次触发静态块的执行。

文件名: MainLoading.java

输出

Parent class first static block
Parent class second static block
Child class static block

解释

在上面的代码中,Parent 类包含两个静态块,一个是第一个静态块,另一个是第二个静态块。Child 类仍然有一个静态块。

当程序开始执行时,静态块会在类加载过程中按以下顺序执行:

步骤 1: JVM 首次引用 Parent 类时加载它。

步骤 2: JVM 遇到 Parent 类中的第一个静态块并执行它,输出为“Parent class first static block.”(父类第一个静态块)。

步骤 3: 然后,JVM 遇到 Parent 类中的第二个静态块并执行它,输出为“Parent class second static block.”(父类第二个静态块)。

步骤 4: 接下来,JVM 加载 Child 类。

步骤 5: JVM 遇到 Child 类中的静态块并执行它,输出为“Child class static block.”(子类静态块)。

步骤 6: 最后,程序继续创建 Child 类的实例。


下一主题Java 入门