关于类加载顺序

Posted lshspace

tags:

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

父类:

package org.com.extendTest;

public abstract class PerantClass {

    static int a = init();

    public static int init() {
        System.out.println("我是父类(静态变量)");
        return 1;
    }

    static {
        System.out.println("我是父类(静态代码块)!");
    }

    public PerantClass() {
        System.out.println("我是父类(构造器)");
    }

    {
        System.out.println("我是父类(普通代码块)!");
    }

    public void sayHello() {
        System.out.println("我是父类(成员方法)");
    }

}

子类:

package org.com.extendTest;

public class ChildClass extends PerantClass {

    static {
        System.out.println("我是子类(静态代码块)!");
    }

    static int a = init();

    public ChildClass() {
        System.out.println("我是子类(构造器)");
        System.out.println("--------------------");
    }

    {
        System.out.println("我是子类(普通代码块)!");
    }

    public void sayHello() {
        System.out.println("我是子类(成员方法)");
    }

    public static void main(String[] args) {
        ChildClass class1 = new ChildClass();
        class1.sayHello();
    }

    public static int init() {
        System.out.println("我是子类(静态变量)");
        System.out.println("--------------------");
        return 1;
    }

}

结果:

  技术分享图片

结论:1.先父类后子类

   2.static顺序为代码顺序

   3.static > 普通代码块 > 构造器 > 成员方法

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

关于js----------------分享前端开发常用代码片段

关于类加载顺序问题的题

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

关于代码片段的时间复杂度

Java 类中各成分加载顺序 和 内存中的存放位置

关于application和bootstrap的加载顺序及区别问题