標籤:
剛開始接觸時,很不容易分清楚建立子類或者多態的情況:/*建立子類的情況:1.父類靜態代碼塊 2.子類靜態代碼塊 3.父類構造塊 /執行個體變數(new 建立的變數成員)//誰在前執行誰,執行完再執行建構函式4.父類建構函式//父類建構函式有方法,如果方法子類有就執行子類的方法,沒有才再執行父類方法.//如果子類有父類沒有會報錯!//父類私人該方法就執行父類的方法5.子類構造塊/執行個體變數//誰在前執行誰,執行完再執行建構函式6.子類建構函式7.子類普通方法//調用成員變數,看子類的值,沒有再看父類的值8.子類成員變數//沒有就調用父類的值9.普通方法輸出結果
class A{ int m=1; {System.out.println("111");}//1-->111 A(){ speak();//4-->直接執行子類的方法5 } C c = new C(); //2--> {System.out.println("222");} void speak(){ System.out.println("a"); }}class C{ C(){ System.out.println("c");//3-->c //7-->c }}class B extends A{ int m = 5; //10--> {System.out.println("333");} B(){ System.out.println("b");//8-->b } C c = new C(); //6--> void speak(){ System.out.println(m);//5-->0 //9--> //11-->5 } {System.out.println("444");} public static void main (String[] args){ B b = new B(); b.speak(); }}
注釋後面為執行順序和輸出結果.
子父類中碼靜態代塊 構造代碼塊. 代碼塊 建構函式 成員變數 執行個體變數 執行順序