在巢狀繼承中,建構式以及設定式的執行順序是不太相同的,以下針對這部分,使用個簡單範例來說明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| void Main() { Second obj = new Second(); }
class Ref { public Ref(string str) { Console.WriteLine(str); } }
class Base { public Ref BaseString = new Ref("Base 初始設定"); public Base() { Console.WriteLine("Base 建構式"); } }
class First : Base { public Ref firstString = new Ref("First 初始設定"); public First() { Console.WriteLine("First 建構式"); } }
class Second : First { public Ref SecondString = new Ref("Second 初始設定"); public Second() { Console.WriteLine("Second 建構式"); } }
|
其執行順序是繼承的最末端到基底的方向(子到父),執行初始設定,再由基底到繼承末端(父到子)執行建構式,執行結果如下:
可由此張流程圖看出:
graph TD
A(Second 初始設定)-->B(First 初始設定)
B-->C(Base 初始設定)
C-->D(Base 建構式)
D-->E(First 建構式)
E-->F(Second 建構式)