先執行 內部靜態物件的構造方法 如果有多個按定義的先後順序執行,靜態物件在構造的時候也是先執行其內部的靜態物件再呼叫父類的構造方法,如果父類還有父類的話,從最開始的基類進行呼叫,如果沒有 編譯器會呼叫自己預設的父類構造方法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...