java类加载

来源:互联网 发布:台湾传奇网络官网 编辑:程序博客网 时间:2024/06/11 01:57

程序中对子类的“主动使用”会导致父类被初始化,但对父类的“主动” 使用并不会导致子类的

初始化


编译时常量的调用不会导致类的加载。


主动使用:

1,创建类的实例 

2,访问某个类或接口的静态变量,或者对该静态变量赋值

3,调用类的静态方法

4,反射,如Class.forName()

5,初始化一个类的子类

6,java虚拟机启动时被标明为启动的类

除上述六种情形,其他使用java类的方式都被看作是被动使用,不会导致类的初始化


接口:

当JAVA虚拟机初始化一个类时,要求它的所有你类都已经被初始化,但是这条规则并不适用于接口

1, 初始化一个类时,并不会先初始化它所实现的接口

2,在初始化一个接口时,并不会先初始化它的父接口

因此,一个父接口并不会因为它的子接口或者实现类的初始化而初始化。只有当程序首次使用特定接口的静态变量时,才会导致该接口的初始化



ClassLoader