Java_靜態程式碼塊、構造程式碼塊、構造器和類的初始化載入順序
阿新 • • 發佈:2022-03-22
非常細緻的載入順序講解 轉載 site:https://www.cnblogs.com/Qian123/p/5713440.html
class Parent { 2 /* 靜態變數 */ 3 public static String p_StaticField = "父類--靜態變數"; 4 /* 變數 */ 5 public String p_Field = "父類--變數"; 6 protected int i = 9; 7 protected int j = 0; 8 /* 靜態初始化塊 */ 9 static { 10 System.out.println( p_StaticField ); 11 System.out.println( "父類--靜態初始化塊" ); 12 } 13 /* 初始化塊 */ 14 { 15 System.out.println( p_Field ); 16 System.out.println( "父類--初始化塊" ); 17 } 18 /* 構造器 */ 19 public Parent() 20 { 21 System.out.println( "父類--構造器" ); 22 System.out.println( "i=" + i + ", j=" + j ); 23 j = 20; 24 } 25 } 26 27 public class SubClass extends Parent { 28 /* 靜態變數 */ 29 public static String s_StaticField = "子類--靜態變數"; 30 /* 變數 */ 31 public String s_Field = "子類--變數"; 32 /* 靜態初始化塊 */ 33 static { 34 System.out.println( s_StaticField ); 35 System.out.println( "子類--靜態初始化塊" ); 36 } 37 /* 初始化塊 */ 38 { 39 System.out.println( s_Field ); 40 System.out.println( "子類--初始化塊" ); 41 } 42 /* 構造器 */ 43 public SubClass() 44 { 45 System.out.println( "子類--構造器" ); 46 System.out.println( "i=" + i + ",j=" + j ); 47 } 48 49 50 /* 程式入口 */ 51 public static void main( String[] args ) 52 { 53 System.out.println( "子類main方法" ); 54 new SubClass(); 55 } 56 } 結果: 父類--靜態變數 父類--靜態初始化塊 子類--靜態變數 子類--靜態初始化塊 子類main方法 父類--變數 父類--初始化塊 父類--構造器 i=9, j=0 子類--變數 子類--初始化塊 子類--構造器 i=9,j=20