Java類的基本執行順序

beifengwang發表於2014-03-26

作為程式設計師,應該對自己寫的程式具備充分的掌控能力,應該清楚程式的基本執行過程,否則糊里糊塗的,不利於對程式的理解和控制,也不利於技術上的發展。

我們以下面的類來說明一個基本的Java類的執行順序:


第1行 public class Test {
第2行 private String name = "Java私塾";
第3行 private int age = 2;
第4行 public Test(){
第5行 age = 1000;//期望能到1000年,呵呵
第6行 }
第7行 public static void main(String[] args) {
第8行 Test t = new Test();
第9行 System.out.println(t.name+"的年齡是"+t.age+"年");
第10行 }
第11行 }

執行的基本順序是:
(1):先執行到第7行,這是程式的入口
(2):然後執行到第8行,這裡要new一個Test,就要呼叫Test的構造方法
(3):就執行到第4行,注意:可能很多人覺得接下來就應該執行第5行了,錯!初始化一個類,必須先初始化它的屬性
(4):因此執行到第2行,然後是第3行
(5):屬性初始化完過後,才回到構造方法,執行裡面的程式碼,也就是第5行
(6):然後是第6行,表示new一個Test例項完成
(7):然後回到main方法中執行第9行
(8):然後是第10行

執行的結果是:Java私塾的年齡是1000年
說明:這裡只是說明一個基本的執行過程,沒有考慮更多複雜的情況。

繼承中:初始化子類必先初始化父類
有繼承的類在執行的時候,一定要記得:初始化子類必先初始化父類,這是Java程式的一個基本執行過程。比如:

第1行public class Test extends Parent{
第2行 private String name = "Java私塾";
第3行 private int age = 2;
第4行 public Test(){
第5行 age = 1000;//期望能到1000年,呵呵
第6行 }
第7行 public static void main(String[] args) {
第8行 Test t = new Test();
第9行 System.out.println(t.name+"的年齡是"+t.age+"年");
第10行 }
第11行}
第12行class Parent{
第13行 private int num = 1;
第14行 public Parent(){
第15行 System.out.println("現在初始化父類");
第16行 }
第17行 public void test(){
第18行 System.out.println("這是父類的test方法");
第19行 }
第20行}

上述類的基本執行順序是:
(1):先執行到第7行,這是程式的入口
(2):然後執行到第8行,這裡要new一個Test,就要呼叫Test的構造方法
(3):就執行到第4行,注意:初始化子類必先初始化父類
(4):要先初始化父類,所以執行到第14行
(5):然後是第13行,初始化一個類,必須先初始化它的屬性
(6):然後是第15行
(7):然後是第16行,表示父類初始化完成
(8):然後是回到子類,開始初始化屬性,因此執行到第2行,然後是第3行
(9):子類屬性初始化完過後,才回到子類的構造方法,執行裡面的程式碼,也就是第5行
(10):然後是第6行,表示new一個Test例項完成
(11):然後回到main方法中執行第9行
(12):然後是第10行

執行結果是:
現在初始化父類
Java私塾的年齡是1000年

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29212814/viewspace-1129737/,如需轉載,請註明出處,否則將追究法律責任。

相關文章