龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

java日记(3) 类的初始化问题(CSDN一个问题有感)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
我在原问题上加了一个输出7;便于说明父类初始化的时间; public class Test2 extends Test1 { { System.out.print("1"); } Test2() { System.out.print("2"); } static { System.out.print("3"); } { System.out.print("4"); } pu

  我在原问题上加了一个输出“7”;便于说明父类初始化的时间;

  public class Test2 extends Test1 {
      {
          System.out.print("1");
      }

      Test2() {
          System.out.print("2");
      }

      static {
          System.out.print("3");
      }

      {
          System.out.print("4");
      }

      public static void main(String[] args) {
          new Test2();
      }
  }

  class Test1 {
      {
          System.out.print("7");
      }

      Test1() {
          System.out.print("5");
      }

      static {
          System.out.print("6");
      }
  }

  程序执行结果:6375142
  调用顺序:
  1、先对类进行加载:初始化静态变量,先初始化父类的静态变量,然后才是子类的静态变量;
  2、对类进行初始化:在子类初始化以前,先进行父类的初始化,以及父类构造器的调用;
  3、最后初始化子类,调用子类构造方法;

  在中文TIJ中,曾经说道父类的构造方法在子类的构造方法之前执行,这样说虽然不是错误的,但是是不

  完善的,应该是父类的构造方法在子类初始化之前就已经执行了。


  
精彩图集

赞助商链接