java中类加载顺序

    技术2022-07-13  86

    package com.phome.classloader; public class ClassLoaderDemo2 { static class A2{ B2 b2 = new B2(); static{ System.out.println("A static"); } public A2() { System.out.println("A2()"); } } static class B2{ C2 c2 = new C2(); E2 e2 = new E2(); static{ System.out.println("B static"); } public B2() { System.out.println("B2()"); } } static class C2 extends D2{ static{ System.out.println("C static"); } public C2() { System.out.println("C2()"); } } static class D2{ static{ System.out.println("D static"); } public D2() { System.out.println("D2()"); } }static class E2{ static{ System.out.println("E static"); } public E2() { System.out.println("E2()"); } } public static void main(String[] args) { A2 a2 = new A2(); } }

    执行结果为:

    A static B static D static C static D2() C2() E static E2() B2() A2()

    总结:

    1、自身静态代码块 -> 引用静态代码块 ->父类静态代码块 -> 子类静态代码块 -> 父类构造方法 ->子类构造方法 ->引用构造方法 ->自身构造方法

    2、> 主类的静态成员首先初始化。 

         > 主类的父类的构造方法被调用。 

         > 主类的非静态对象(变量)初始化。

         > 调用主类的构造方法。

    Processed: 0.016, SQL: 10