C#構(gòu)造函數(shù)在繼承過(guò)程中的執(zhí)行順序
?using System;
class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? childTest test = new childTest();
??????????? childTest test1 = new childTest(2);
??????????? childTest test2 = new childTest(2, 3);
??????????? Console.Read();
??????? }
??? }
??? class baseTest
??? {
?????? public baseTest()
??????? {
??????????? Console.WriteLine("父類(lèi)構(gòu)造函數(shù)");
??????? }
??????? public baseTest(int i)
??????? {
??????????? Console.WriteLine("父類(lèi)有參數(shù)構(gòu)造函數(shù)"+i);
??????? }
??? }
??? class childTest:baseTest
??? {
??????? public childTest()
??????? {
??????????? Console.WriteLine("子類(lèi)無(wú)參數(shù)構(gòu)造函數(shù)");
??????? }
??????? public childTest(int i)
??????? {
??????????? Console.WriteLine("子類(lèi)有參數(shù)構(gòu)造函數(shù)" + i);
??????? }
??????? public childTest(int a, int b):base(a)
??????? {
??????????? Console.WriteLine("子類(lèi)2個(gè)參數(shù)構(gòu)造函數(shù)");
??????? }
??? }
以上這段代碼的運(yùn)行結(jié)果是:
父類(lèi)構(gòu)造函數(shù)
子類(lèi)無(wú)參數(shù)構(gòu)造函數(shù)
父類(lèi)構(gòu)造函數(shù)
子類(lèi)有參數(shù)構(gòu)造函數(shù)2
父類(lèi)有參數(shù)構(gòu)造函數(shù)2
子類(lèi)2個(gè)參數(shù)構(gòu)造函數(shù)
從運(yùn)行結(jié)果上就可以看到是先執(zhí)行父類(lèi)的構(gòu)造函數(shù),然后再運(yùn)行子類(lèi)的構(gòu)造函數(shù),并且如果不是顯示的調(diào)用父類(lèi)的構(gòu)造函數(shù)的話,那就會(huì)調(diào)用無(wú)參數(shù)構(gòu)造函數(shù),反之則不會(huì)調(diào)用。