java类加载

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

初始化


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


主动使用:

1,创建类的实例 

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

3,调用类的静态方法

4,反射,如Class.forName()

5,初始化一个类的子类

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

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


接口:

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

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

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

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



ClassLoader


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值