JAVA物件的初始化順序

壹頁書發表於2013-12-19
JAVA物件初始化順序,實驗程式碼如下:

  1. class Base
  2. {
  3.     private int i=Test.print("Base 資料成員i");
  4.     private static int I=Test.print("Base 靜態成員I");
  5.     private static int J=Test.print("Base 靜態成員J");
  6.     private static int K=Test.print("Base 靜態成員K");
  7.     //靜態初始化塊
  8.     static {
  9.         System.out.println("Base 靜態初始化塊");
  10.     }
  11.     //匿名初始化塊
  12.     {
  13.         System.out.println("Base 匿名初始化塊");
  14.     }
  15.     public Base(){
  16.         System.out.println("Base 建構函式");
  17.     }
  18. }

  19. class Derived extends Base{
  20.     private int i=Test.print("Derived 資料成員i");;
  21.     private static int I=Test.print("Derived 靜態成員I");;
  22.     //靜態初始化塊
  23.     static {
  24.         System.out.println("Derived 靜態初始化塊");
  25.     }
  26.     //匿名初始化塊
  27.     {
  28.         System.out.println("Derived 匿名初始化塊");
  29.     }
  30.     
  31.     public Derived(){
  32.         System.out.println("Derived 建構函式");
  33.     }
  34.     
  35. }

  36. public class Test{
  37.     public static int print(String string) {
  38.         System.out.println(string);
  39.         return 0;
  40.     }
  41.     public static void main(String[] args) {
  42.         Base b=new Derived();
  43.     }
  44. }
    
       執行結果如下:
            Base 靜態成員I
            Base 靜態成員J
            Base 靜態成員K
            Base 靜態初始化塊
            Derived 靜態成員I
            Derived 靜態初始化塊
            Base 資料成員i
            Base 匿名初始化塊
            Base 建構函式
            Derived 資料成員i
            Derived 匿名初始化塊
            Derived 建構函式

其中Base是父類,Derived是子類,根據以上實驗結果得出JAVA初始化的順序

類裝載階段
    1.父類靜態成員
    2.父類靜態初始化塊
    3.子類靜態成員
    4.子類靜態初始化塊
    
物件階段
    5.父類資料成員
    6.父類匿名初始化塊
    7.父類建構函式
    8.子類資料成員
    9.子類匿名初始化塊
    10.子類建構函式
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1063745/,如需轉載,請註明出處,否則將追究法律責任。

相關文章