初始化 对于类与接口的异同
-
在说案例之前,先看一下这个
-
案例 一
所以这里验证了一条 :
1. 当虚拟机初始化一个类的时候要求它的父类都已初始化;
2. 但接口不同,在初始化一个类的时候并不会初始化它的实现类(但是会加载)
注意 (类继承类)
通过之前的学习 我们知道 当主动使用一个类的时候,也会初始化它的 父类
1.但是如果 是常量 在编译阶段会存入到调用这个常量方法所在的常量池中,所以并不会对 其使用类与其父类 的加载和初始化,
2. 但是以上一条 只适用于 此常量的值在编译时期就可以确定,
如果常量的值在编译时期无法确定,会导致主动使用这个常量所在的类,显然会导致这个类的初始化(也就一定会在初始化之前进行加载)
- 案例 二
···
结论;
当初始化一个接口的时候 并不会去初始化它的父接口(父接口会加载 但不会初始化)
建议自己动手敲一敲 跑一遍
配置 类的加载初始化 过程