C#类的继承,构造函数实现及其调用顺序

来源:互联网 发布:数据查询网站 编辑:程序博客网 时间:2024/06/05 20:00

类层层派生,在实例化的时候构造函数的调用顺序是怎样的? --从顶层基类开始向子类方向顺序调用无参构造.

默认构造(无参构造)和带参构造什么时候调用?--默认将从顶层父类的默认构造一直调用到当前类的默认构造.

下面是C#继承构造函数实现及调用示例:

  1. /**//*--===------------------------------------------===---  
  2. 作者:许明会  
  3. 日期:类的派生和构造函数间的关系,调用层次及实现  
  4. 日期:2009年7月18日 17:30:43  
  5. 若希望类能够有派生类,必须为其实现默认构造函数.  (重点)
  6. 若类没有实现带参构造,编译器将自动创建默认构造函数.  
  7. 若类实现了带参构造,则编译器不会自动生成默认构造.  
  8. --===------------------------------------------===---*/ 
  9. using System;  //C#继承构造函数实现及调用
  10.  
  11. namespace xumh  
  12. {  
  13. public class MyClass  
  14. {  
  15. public MyClass()  
  16. {  
  17. Console.WriteLine("MyClass:默认构造函数");  
  18. }  
  19. public MyClass(int a, int b)  
  20. {  
  21. Console.WriteLine("MyClass带参构造:a={0}, b={1}.", a, b);  
  22. }  
  23. }  
  24.  
  25. public class MyClass2 : MyClass  
  26. {  
  27. public MyClass2()  
  28. {  
  29. Console.WriteLine("MyClass2:默认构造函数");  
  30. }  
  31. public MyClass2(int a, int b)  
  32. {  
  33. Console.WriteLine("MyClass2带参构造:a={0}, b={1}.", a, b);  
  34. }  
  35. }  
  36.  //C#继承构造函数实现及调用
  37. public class MyClass3 : MyClass2  
  38. {  
  39.  
  40. public MyClass3()  
  41. {  
  42. Console.WriteLine("MyClass3:默认构造函数");  
  43. }  
  44. public MyClass3(int a, int b)  
  45. {  
  46. Console.WriteLine("MyClass3带参构造:a={0}, b={1}.", a, b);  
  47. }  
  48. }  
  49.  
  50. public class runMyApp  
  51. {  
  52. static void Main()  
  53. {  
  54. MyClass3 my = new MyClass3(3,4);  
  55. }  
  56. }  
  57. }  //C#继承构造函数实现及调用
  58. /**//*--===------------------------------------------===---  
  59. 输出如下:  
  60. MyClass:默认构造函数  
  61. MyClass2:默认构造函数  
  62. MyClass3带参构造:a=3, b=4.  
  63. --===------------------------------------------===---*/
原创粉丝点击