在JVM类加载这篇文章中,已经确定一个类在初始化时必须先行初始化其父类(如果有),我们接着来看接口的初始化,我们明白接口中的成员属性都是public static final修饰的,例子中省略不写!!!
结论:父接口的实例化块的内容并未输出,证明在初始化一个类时,并不会先初始化它所实现的接口,我们接着往下看!
结论:仅仅只输出子接口的实例化块的内容说明了在初始化一个接口时,并不会先初始化它的父接口,下面输出的是线程重写的toString方法不影响得出的结论!
注意:只有在真正使用到父接口的时候(如引用接口中所定义的常量时),才会初始化,这点与类不同;另外与类一样,被final修饰的静态成员变量初始化所被赋予的值不确定时(运行期确定)不会被放置在常量池当中,所以需要类运行时存在
再来看一个例子加深类加载器准备阶段(