java中类的加载情况

时间:2023-03-08 22:33:19
java中类的加载情况

当一个类存在继承且与其他类有关联情况时,类中各模块加载顺序如下:

  1.首先找到public类,判断该类是否继承其他类,如果没有继承其他类(Object类除外),则加载该类;否则转去加载该类的超类,超类情况于此等同,加载类情况如下:

    1)首先按顺序加载该类中被static修饰的成员变量和代码块。

    2)返回到该类的子类中去加载类中被static修饰的成员变量和代码块。

    3)顺序执行public类的main()方法中的代码。遇到new关键字转去对应类。

    4)转到对应类后首先执行初始化该类的成员变量,若成员变量为对象则转到该对象的类中执行相同操作。

    5)成员变量执行完毕后加载构造器设置成员变量值。

测试代码如下:
public class Test  extends superTest{
   static{
      System.out.println(3);
   }
   private ssuperTest ssu=new ssuperTest();
 
     public static void main(String[] args)  {
       new Test();
       }
}
class superTest extends ssuperTest{
   static{
      System.out.println(2);
   }
   public superTest(){
      System.out.println(7);
   }
}
class ssuperTest{
   private memberClass m=new memberClass();
   static{
      System.out.println(1);
   }
   public ssuperTest(){
      System.out.println(6);
   }
}
class memberClass{
   static{
      System.out.println(4);
   }
   public memberClass(){
      System.out.println(5);
   }
}

执行结果为:1 2 3 4 5 6 7 5  6