分析类初始化


package com.cheng.reflection;
//测试类什么时候会初始化
public class Demo05 {
static {
System.out.println("main类被加载");
}
public static void main(String[] args) throws ClassNotFoundException{//抛出异常
//1.主动引用
//Son son = new Son();
// System.out.println(son.m);
//2.反射也会产生主动引用
// Class.forName("com.cheng.reflection.Son");
// 被动引用
//子类调用父类的静态方法不会触发主动引用
//System.out.println(Son.a);
//输出结果为:
// main类被加载
//父类被加载
//2
//数组
//Son[] array = new Son[5];
//输出结果为 main类被加载
//打印常量池的常量
System.out.println(Son.N);
//输出结果为:
// main类被加载
//1
}
}
class Father{
static int a = 2;
static {
System.out.println("父类被加载");
}
}
class Son extends Father{
static {
System.out.println("子类被加载");
m = 300;
}
static int m = 100;
static final int N = 1;
//1和2的输出结果如下:
// main类被加载
//父类被加载
//子类被加载
//100
}

浙公网安备 33010602011771号