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 args)
}
package test;
public class grandchild extends son
public grandchild()
public grandchild(int s)
public grandchild(long s)
public static void main(string args)
}
執行以下**
public static void main(string args)
結果為:
i am father
i am son
i am grandchild
father create
son create
grandchild create
執行以下**
public static void main(string args)
結果為
i am father
i am son
i am grandchild
father create
son create with param: int
grandchild create with param: int
執行以下**
public static void main(string args)
結果為:
i am father
i am son
i am grandchild
father create
son create with param: int
grandchild create with param: int
grandchild create with param: long
以上:
1 類中的靜態物件先於static{}執行
2 static{}中的**是在構建類物件之前執行的
3 構造子類的時候是按照先父後子的順序執行的
4 如果在子的建構函式中並沒有使用顯式的呼叫父類的建構函式(使用super),則執行無參建構函式。
5 如果使用this(),則會先呼叫this(),再呼叫下面的**(此時父類別的預設建構函式不再執行,而會根據執行this()執行相應的父建構函式)
繼承下建構函式的執行順序
這裡先給出結論,在貼出 與執行結果 乙個派生類建構函式的執行順序如下 第一步執行 虛擬基類的建構函式 多個虛擬基類則按照繼承的順序執行建構函式 第二步執行 基類的建構函式 多個普通基類也按照繼承的順序執行建構函式 第三步執行 類型別的成員物件的建構函式 按照初始化順序 第四部執行 派生類自己的建構函...
java繼承的構造函式呼叫順序
1 首先呼叫父類的無參建構函式 這個建構函式必定會被呼叫 2 呼叫子類的無參建構函式或帶引數的建構函式 例 1 宣告抽象類爺爺 father of abstractclass public abstract class father of abstractclass protected father...
C 中多重繼承建構函式執行順序
1 1 include 2 include 3 4using namespace std 56 classa11 12 classb17 18 class c public b,publica24 25 intmain 輸出 b ac 分析 多重繼承與單繼承類似,也是先執行基類建構函式。多個基類之間...