關於JAVA靜態初始化塊,初始化塊,構造器調用順序的問題 – JAVA編程語言程序開發技術文章

一個簡單的關於初始化塊,靜態初始化塊,構造器的執行順序的小例子,請大傢參考:

父類如下:

[java] 
package test.jamin; 
/**
 * ClassName:Father
 *
 * @author   wangjieming
 * @version  1.0
 * @since    v1.0
 * @Date     2012-7-2 下午2:13:57 
 */ 
public class Father { 
 
    static{ 
        System.out.println("Father Static Block"); 
    } 
     
    { 
        System.out.println("Father Block"); 
    } 
     
    public Father(){ 
        System.out.println("Father Constructor"); 
    } 
     
     

子類如下:

[java] 
package test.jamin; 
/**
 * ClassName:Child
 *
 * @author   wangjieming
 * @version  1.0
 * @since    v1.0
 * @Date     2012-7-2 下午2:16:42 
 */ 
public class Child extends Father{ 
 
     
     
    static{ 
        System.out.println("Child Static Block"); 
    } 
     
    { 
        System.out.println("Child Block"); 
    } 
     
    public Child(){ 
        System.out.println("Child Constructor"); 
    } 
     
    public static void main(String[] args) { 
        Child c = new Child(); 
    } 
     

分析:

       子類繼承父類:

       先調用父類的靜態初始化塊,再調用子類的靜態初始化塊

       ——————————–分割線———————————–

       如果子類被實例化,調用父類初始化塊,父類構造器;再調用子類初始化塊,子類構造器

運行結果如下:

 
作者:jamin0107

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *