namespace TeseApplication { class Program { static void Main(string[] args) { MyClass2 my = new MyClass2(3, 4); Console.ReadLine(); } } public class MyClass { public MyClass() { Console.WriteLine("MyClass:默认构造函数"); } public MyClass(int a, int b) { Console.WriteLine("MyClass带参构造:a={0}, b={1}.", a, b); } } public class MyClass2 : MyClass { public MyClass2() { Console.WriteLine("MyClass2:默认构造函数"); } public MyClass2(int a, int b) { Console.WriteLine("MyClass2带参构造:a={0}, b={1}.", a, b); } } }
故构造顺序为:父类默认构造 =>子类具体构造
那如果我们想实现父类的具体构造,可以采用以下的写法
namespace TeseApplication { class Program { static void Main(string[] args) { MyClass2 my = new MyClass2(3, 4); Console.ReadLine(); } } public class MyClass { public MyClass() { Console.WriteLine("MyClass:默认构造函数"); } public MyClass(int a, int b) { Console.WriteLine("MyClass带参构造:a={0}, b={1}.", a, b); } } public class MyClass2 : MyClass { public MyClass2() { Console.WriteLine("MyClass2:默认构造函数"); } public MyClass2(int a, int b) : base(a, b) { Console.WriteLine("MyClass2带参构造:a={0}, b={1}.", a, b); } } }
故构造顺序为:父类具体构造 =>子类具体构造