Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念。下面探究一下它的执行顺序与可能的用途。执行顺序 首先定义A, B, C三个类用作测试,其中B继承了A,C又 ...
Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念。下面探究一下它的执行顺序与可能的用途。
执行顺序
首先定义A, B, C三个类用作测试,其中B继承了A,C又继承了B,并分别给它们加上静态初始化块、非静态初始化块和构造函数,里面都是一句简单的输出。
主类Main里面也如法炮制。
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
(#换成@)。