1. 程式人生 > >Java 子類父類構造方法執行順序

Java 子類父類構造方法執行順序

 1 public class Test {
 2     class Super {
 3         int flag = 1;
 4 
 5         Super() {
 6             test();
 7         }
 8 
 9         void test() {
10             System.out.println("Super.test() flag=" + flag);
11         }
12     }
13 
14     class Sub extends Super {
15         Sub(int i) {
16 flag = i; 17 System.out.println("Sub.Sub()flag=" + flag); 18 } 19 20 void test() { 21 System.out.println("Sub.test()flag=" + flag); 22 } 23 } 24 25 public static void main(String[] args) { 26 new Test().new Sub(5); 27 }
28 }
先將父類的flag變數進行初始化,初始化為1,然後呼叫父類的構造方法,然後父類的構造方法中有test()方法,注意這裡呼叫的子類的test()方法,此時flag = 1;
父類的構造方法呼叫完畢,然後呼叫子類的構造方法,此時flag變數已經變成了5,所以列印結果為:
Sub.test()flag=1
Sub.Sub()flag=5