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("父类构造函数"); } public baseTest(int i) { Console.WriteLine("父类有参数构造函数" + i); } } class childTest : baseTest { public childTest() { Console.WriteLine("子类无参数构造函数"); } public childTest(int i) { Console.WriteLine("子类有参数构造函数" + i); } public childTest(int a, int b) : base(a) { Console.WriteLine("子类2个参数构造函数"); } }以上这段代码的运行结果是:
父类构造函数
子类无参数构造函数
父类构造函数
子类有参数构造函数2
父类有参数构造函数2
子类2个参数构造函数
从运行结果可以看出,先执行父类的构造函数,再执行子类的构造函数。如果没有显式调用父类的构造函数,则会默认调用父类的无参数构造函数;反之,如果显式调用了父类的有参数构造函数,则不会调用无参数构造函数。