父子類的靜態程式碼塊 建構函式
阿新 • • 發佈:2018-12-25
public class ParentStatic { private int x=3; private String y ="3"; public ParentStatic() { System.out.println("這是父類的空參建構函式"); } public ParentStatic(int x,String y) { System.out.println("這是父類的有參建構函式"+x+y); } { System.out.println("這是父類的非靜態程式碼快"); } static { System.out.println("這是父類的靜態程式碼快"); } public static void main(String[] args) { // TODO Auto-generated method stub ChildA a = new ChildA(); } } class ChildA extends ParentStatic{ private int x =6 ; private int y =4; public ChildA(){ System.out.println("這是子類的空參建構函式"); } public ChildA(int t,int c) { //這裡預設隱藏了一條語句 super(); System.out.println("這是子類的有參建構函式:"+t+c); } { System.out.println("這是子類的非靜態程式碼塊"); } static { System.out.println("這是子類的靜態程式碼塊"); } } /* *這是父類的靜態程式碼快 *這是子類的靜態程式碼塊 *這是父類的非靜態程式碼快 *這是父類的空參建構函式 *這是子類的非靜態程式碼塊 *這是子類的空參建構函式 */ //當使用有參建構函式例項化物件時的結果 ChildA b = new ChildA(2, 5); /** 這是父類的靜態程式碼快 這是子類的靜態程式碼塊 這是父類的非靜態程式碼快 這是父類的空參建構函式 這是子類的非靜態程式碼塊 這是子類的有參建構函式:25 **/ //當建立兩個物件時: ChildA a = new ChildA(); ChildA b = new ChildA(2, 5); /** 結果如下 這是父類的靜態程式碼快 這是子類的靜態程式碼塊 這是父類的非靜態程式碼快 這是父類的空參建構函式 這是子類的非靜態程式碼塊 這是子類的空參建構函式 ------------靜態程式碼塊只在第一次new執行一次,之後不再執行,而非靜態程式碼塊在每new一次就執行一次。------------------------------------------------------------- 這是父類的非靜態程式碼快 這是父類的空參建構函式 這是子類的非靜態程式碼塊 這是子類的有參建構函式:25 **/
總結:先父後子,先靜後動,最後執行構造,一個類的靜態程式碼快僅在載入時執行一次…