分析类初始化

分析类初始化:

 

 


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

}

 

 

posted @ 2021-07-06 17:19  Dudo1  阅读(212)  评论(0)    收藏  举报