类加载顺序

Posted 专业开发人员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类加载顺序相关的知识,希望对你有一定的参考价值。

package api;

//1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
//2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行
//3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
//4. 父类构造方法
//5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行
//6. 子类构造方法
public class Box {

public static void main(String[] args) {
    A ab = new B();
    System.out.println("---");
    ab = new B();
}

}
class A {

private static int numA;
private int numA2;

static {
    System.out.println("A的静态字段 : " + numA);
    System.out.println("A的静态代码块");
}

{
    System.out.println("A的成员变量  : " + numA2);
    System.out.println("A的非静态代码块");
}

public A() {
    System.out.println("A的构造器");
}

}

class B extends A {

private static int numB;
private int numB2;

static {
    System.out.println("B的静态字段 : " + numB);
    System.out.println("B的静态代码块");
}

{
    System.out.println("B的成员变量 : " + numB2);
    System.out.println("B的非静态代码块");
}

public B() {
    System.out.println("B的构造器");
}

}

以上是关于类加载顺序的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

类加载顺序

Java 的类加载顺序

Java类加载

Java类加载

java类加载顺序