Java中構造方法的執行順序

2021-08-21 11:05:02 字數 1284 閱讀 6900

先執行 內部靜態物件的構造方法 如果有多個按定義的先後順序執行,靜態物件在構造的時候也是先執行其內部的靜態物件

再呼叫父類的構造方法,如果父類還有父類的話,從最開始的基類進行呼叫,如果沒有 編譯器會呼叫自己預設的父類構造方法super();但是如果呼叫父類自定義的構造方法時候,要在子類的構造方法中明確指定

按照生命順序將成員變數引用物件變數初始化

最後再呼叫自身的構造方法

class animal  

animal(string name)

public void printnumber()

}

class fish extends animal

}

class goldfish extends fish

}

class cat

}

class rabbit

}

class dog extends animal

public void printnumber()

}

public class testinheritanceconstructor extends animal

}

執行結果:

class cat 

1class rabbit

2class rabbit

tom  class animal

the dog's number is:0

class animal

class fish

class goldfish

class dog

the dog's number is:10

解釋:輸出:class cat  是因為dog類中有靜態成員。而靜態成員所在的類rabbit中又有靜態成員。所以最先執行它。驗證第 一句。

輸出:1class rabbit 和 2class rabbit 是執行類rabbit建構函式。

輸出:tomclass animal 執行父類的建構函式,因為用super("")。

輸出:the dog's number is:0 可以看出子類的dognumber還是預設值0

輸出:class animal 和 class fish 和 class goldfish是構造goldfish引用物件型別。驗證第三句。

輸出:class dog  和the dog's number is:10是執行自己的建構函式。

構造方法執行順序

在呼叫子類構造器之前,會先呼叫父類構造器,當子類構造器中沒有使用 super 引數或無引數 指定呼叫父類構造器時,是預設呼叫父類的無參構造器,如果父類中包含有參構造器,卻沒有無參構造器,則在子類構造器中一定要使用 super 引數 指定呼叫父類的有參構造器,不然就會報錯。靜態塊 用static申明,...

關於java建構函式中的執行順序

public class testinte public testinte public void sayhello public static void main string args 一般的結果是先執行靜態 塊,再執行普通碼塊,最後再執行空參 塊 靜態 塊執行了.在靜態 賦值前,order版本...

Java繼承構造執行順序

package test public class father public father package test public class son extends father public son public son int s public static void main string...