你的位置:首页 > 软件开发 > Java > Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

发布时间:2016-07-24 18:00:06
Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念。下面探究一下它的执行顺序与可能的用途。执行顺序  首先定义A, B, C三个类用作测试,其中B继承了A,C又 ...

 

  Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念。下面探究一下它的执行顺序与可能的用途。

执行顺序

  首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块、非静态初始化块和构造函数,里面都是一句简单的输出。

  主类Main里面也如法炮制。

Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
 1 class A { 2   static { 3     System.out.println("Static init A."); 4   } 5  6   { 7     System.out.println("Instance init A."); 8   } 9 10   A() {11     System.out.println("Constructor A.");12   }13 }14 15 class B extends A {16   static {17     System.out.println("Static init B.");18   }19 20   {21     System.out.println("Instance init B.");22   }23 24   B() {25     System.out.println("Constructor B.");26   }27 }28 29 class C extends B {30 31   static {32     System.out.println("Static init C.");33   }34 35   {36     System.out.println("Instance init C.");37   }38 39   C() {40     System.out.println("Constructor C.");41   }42 }43 44 public class Main {45 46   static {47     System.out.println("Static init Main.");48   }49 50   {51     System.out.println("Instance init Main.");52   }53 54   public Main() {55     System.out.println("Constructor Main.");56   }57 58   public static void main(String[] args) {59     C c = new C();60     //B b = new B();61   }62 }

原标题:Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。