C#中类的继承小知识点
类的构造实例化的过程:
一个子类的实例化先调用父类的构造函数,在调用子类的构造函数。
namespace 继承 { class Program { static void Main(string[] args) { 男人 n = new 男人();//声明男人类的对象。 Console.ReadKey();//按任意键退出。 } } class 人 //人 类。 { public 人()//默认的人类的构造函数 { Console.WriteLine("人的默认构造函数。");//输出 } } class 男人:人 // 继承人 类的 男人 类。 { public 男人()//默认的男人类的构造函数 { Console.WriteLine("男人的默认构造函数。");//输出 } } }
输出结果:
带参数的构造函数:
namespace 继承 { class Program { static void Main(string[] args) { 男人 n = new 男人();//声明男人类的对象。 Console.WriteLine("——————————————————"); 男人 nn = new 男人(18);//声明男人类的对象。 Console.ReadKey();//按任意键退出。 } } class 人 //人 类。 { public int age;//全局字段 public 人()//默认的人类的构造函数 { Console.WriteLine("人的默认构造函数。");//输出 } public 人(int a)//带参数的构造函数 { age = a;//赋值 Console.WriteLine("人的带参数的构造函数。年龄:{0}",age);//输出 } } class 男人:人 // 继承人 类的 男人 类。 { public 男人()//默认的男人类的构造函数 { Console.WriteLine("男人的默认构造函数。");//输出 } public 男人(int a)//带参数的构造函数 { age = a;//赋值 Console.WriteLine("男人类的带参数的构造函数。年龄:{0}",age);//输出 } } }
输出结果:
PS:使用带参数的构造函数会先调用父类的默认构造函数,在调用子类带参数的构造函数。
同时调用父类和子类的带参数的构造函数:
... public 男人(int a) : base(a)//在后面加上 : base(a) 就可以调用父类的带参数的构造函数。 ...
输出结果:
同时调用父类默认构造函数和子类默认构造函数和子类带参数的构造函数:
... public 男人(int a) : this()//在后面加上 : this() 就可以调用父类的默认构造函数和子类默认构造函数。 ...
输出结果: