講講類的例項化順序,比如父類靜態資料,建構函式,欄位,子類靜態資料,建構函式,欄位,當 new 的時候, 他們的執行順序
阿新 • • 發佈:2021-08-04
父類靜態代變數、
父類靜態程式碼塊、
子類靜態變數、
子類靜態程式碼塊、
父類非靜態變數(父類例項成員變數)、
父類建構函式、
子類非靜態變數(子類例項成員變數)、
子類建構函式。
程式碼案例:
package jvm.test; /* 類載入器載入順序考究 */ public class TestB { public static void main(String[] args) { son sons=new son(); } } class parent{ private static int a=1; private static int b;private int c=initc(); static { b=1; System.out.println("1.父類靜態程式碼塊:賦值b成功"); System.out.println("1.父類靜態程式碼塊:a的值"+a); } int initc(){ System.out.println("3.父類成員變數賦值:---> c的值"+c); this.c=12; System.out.println("3.父類成員變數賦值:---> c的值"+c);return c; } public parent(){ System.out.println("4.父類構造方式開始執行---> a:"+a+",b:"+b); System.out.println("4.父類構造方式開始執行---> c:"+c); } } class son extends parent{ private static int sa=1; private static int sb; private int sc=initc2(); static { sb=1; System.out.println("2.子類靜態程式碼塊:賦值sb成功"); System.out.println("2.子類靜態程式碼塊:sa的值"+sa); } int initc2(){ System.out.println("5.子類成員變數賦值--->:sc的值"+sc); this.sc=12; return sc; } public son(){ System.out.println("6.子類構造方式開始執行---> sa:"+sa+",sb:"+sb); System.out.println("6.子類構造方式開始執行---> sc:"+sc); } }