继承类和基类的构造函数
Posted pady
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承类和基类的构造函数相关的知识,希望对你有一定的参考价值。
1.类的默认构造函数
1 public class BaseClass 2 { 3 public BaseClass() 4 { 5 // 6 } 7 } 8
2.派生类构造函数
默认构造函数
1 //基类(父类) 2 public class BaseClass 3 { 4 public BaseClass() 5 { 6 // 7 } 8 } 9 //继承类(子类) 10 public class inheritanceClass:BaseClass 11 { 12 public inheritanceClass() 13 { 14 // 15 } 16 }
通过VS断点查看执行过程。
先是到
inheritanceClass构造函数,此时并不进入花括号里的语句(因为没有参数,所以不需要进行传参数给父类)->接着执行BaseClass构造函数的语句块->再执行inheritanceClasss构造函数的语句块
带参数的构造函数
派生类构造函数的参数个数和类型要和父类一致
派生类(类型 参数):base(参数)
1 //基类(父类) 2 public class BaseClass 3 { 4 string A; 5 public BaseClass(string a) 6 { 7 A = a; 8 } 9 } 10 //继承类(子类) 11 public class inheritanceClass:BaseClass 12 { 13 public inheritanceClass(string w):base(w) 14 { 15 // 16 } 17 }
断点执行过程和默认构造函数是一样的。
inheritanceClass构造函数,进行参数传递,不进入语句块->接着执行BaseClass构造函数语句块->再执行inheritanceClasss构造函数语句块。
多个层的继承
public class GradeFatherClass { //爷爷类 private string B; public GradeFatherClass(string b) { B = b; } public void Display(string show) { Console.WriteLine("爷爷:{0}", show); } } //基类(父类) public class BaseClass : GradeFatherClass { string A; public BaseClass(string a):base(a) { A = a; } public void Display() { Console.WriteLine("爸爸:{0}",A); } } //继承类(子类) public class inheritanceClass:BaseClass { private string W; public inheritanceClass(string w):base(w) { W = w; } public new void Display() { Console.WriteLine("我:{0}", W); } }
GradeFatherClass为第一个父类,BaseClass 是GradeFatherClass的子类.
inheritanceClass又是BaseClass的子类.
所以,GradeFatherClass是爷爷类,BaseClass是爸爸类,inheritanceClass是儿子类。
多个层的继承构造函数的执行过程
先到儿子类,进行传参
再到爸爸类,传参
接着到爷爷类。此时就开始执行初始化语句了。
接着执行爸爸类构造函数语句
再执行儿子类构造函数语句
以上是关于继承类和基类的构造函数的主要内容,如果未能解决你的问题,请参考以下文章