java有參無參構造器的的執行順序
阿新 • • 發佈:2018-06-14
color HR throw static data pri spa exce bject
這裏拿了用數組構造棧的一段代碼說明一下
1 public class StackArray<E> { 2 3 private Object[] data = null; 4 private int maxSize; //棧容量 5 private int top = -1; //棧頂指針 6 7 /** 8 * 重寫無參構造函數 9 */ 10 StackArray(){ 11 this(10); //默認棧大小為10 (如果這行前面有代碼,這行就會報錯) 12 System.out.println("無參構造器執行");13 } 14 15 /** 16 * 有參構造函數 17 */ 18 StackArray(int initialSize){ 19 if(initialSize >= 0){ 20 this.maxSize = initialSize; 21 data = new Object[initialSize]; 22 top = -1; 23 }else{ 24 throw new RuntimeException("初始化大小不能小於0:" + initialSize);25 } 26 System.out.println("有參構造器執行"); 27 } 28 29 public static void main(String[] args) { 30 new StackArray(); 31 //new StackArray(20); 32 } 33 }
1)new StackArray()即無參的實例化過程:
找到無參構造器 > 初始化成員變量(引用類型初始化為null,int初始化為0) > this(10)調用有參構造器 > 來到有參構造器並初始化賦值形參(initialSize=10)> 成員變量賦值(例如top=-1)> 執行有參構造器內部代碼(輸出了“有參構造器執行”)> 執行無參構造器內部代碼(輸出了“無參構造器執行”)> 結束
2)new StackArray(20)有參的實例化過程:
找到有參構造器 > 初始化賦值形參並初始化成員變量(引用類型初始化為null,int初始化為0) > 成員變量賦值(例如top=-1)> 執行有參構造器內部的代碼 > 結束
3)如果無參構造器內沒有調用有參構造器,new StackArray()的實例化過程:
找到無參構造器 > 初始化成員變量(引用類型初始化為null,int初始化為0) > 成員變量賦值(例如top=-1)> 執行無參構造器內部代碼(輸出了“無參構造器執行”)> 結束
java有參無參構造器的的執行順序