image.png
/**
 * @author NingXioaoming
 * @createTime 2019/12/12 15:13
 * @description
 */
/*
        一个父接口并不会因为它的子接口或者实现类的初始化而初始化,
        只有当程序首次使用特定接口的静态变量时,才会导致该接口的初始化
 */
public class MyTest5 {
    public static void main(String[] args) {
        System.out.println(MyChild5.bb);
/*        new c();
        new c();*/
    }
}
interface MyParent5{
    String bb = UUID.randomUUID().toString();
//    static int c = 1/0;
    static int a = 4;
    Thread t = new Thread(){
        {
            System.out.println("MyParent5 run");
        }
    };
}
class MyChild5 implements MyParent5{
    public static final String bbc = UUID.randomUUID().toString();
    public static final int b= 5;  //默认为 static和final的
}
class c{
    public c(){//第三执行
        System.out.println("无参构造 run");
    }
    {//第二执行
        System.out.println("nihao");
    }
    static {//先执行
        System.out.println("static 块 run");
    }
}image.png
image.png
由下往上进行加载 只要有一个类加载器加载成功,就加载成功了, 下面加载不成功 则给上面的双亲让双亲进行加载。