Program.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace polymorphic
  7. {
  8. //自定义类
  9. class MyClass1
  10. {
  11. private int x = 0; //定义int型变量,作为加数
  12. private int y = 0; //定义int型变量,作为被加数
  13. //加数
  14. public int X
  15. {
  16. get {
  17. return x;
  18. }
  19. set {
  20. x = value;
  21. }
  22. }
  23. //被加数
  24. public int Y
  25. {
  26. get
  27. {
  28. return y;
  29. }
  30. set
  31. {
  32. y = value;
  33. }
  34. }
  35. //定义一个virtual类型的方法,以便在子类(派生类)中重写该方法
  36. //加法运算的和
  37. public virtual int Add()
  38. {
  39. return X + Y;
  40. }
  41. }
  42. //自定义类,该类继承自MyClass1
  43. class MyClass2 : MyClass1
  44. {
  45. //重写基类中的虚方法
  46. //返回两个int型变量相加的和
  47. public override int Add()
  48. {
  49. int x = 5;
  50. int y = 7;
  51. return x + y;
  52. }
  53. }
  54. internal class Program
  55. {
  56. static void Main(string[] args)
  57. {
  58. MyClass2 myClass2 = new MyClass2(); //实例化MyClass2的对象
  59. //使用子类(派生类)MyClass2的对象实例化基类MyClass1的对象
  60. MyClass1 myClass1 = (MyClass1)myClass2;
  61. myClass1.X = 3; //为MyClass1类中的属性赋值
  62. myClass1.Y = 5; //为MyClass1类中的属性赋值
  63. Console.WriteLine(myClass2.Add()); //调用子类(派生类)中的方法
  64. Console.WriteLine(myClass1.Add()); //同意调用子类(派生类)中的方法
  65. Console.ReadLine();
  66. }
  67. }
  68. }