using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace polymorphic { //自定义类 class MyClass1 { private int x = 0; //定义int型变量,作为加数 private int y = 0; //定义int型变量,作为被加数 //加数 public int X { get { return x; } set { x = value; } } //被加数 public int Y { get { return y; } set { y = value; } } //定义一个virtual类型的方法,以便在子类(派生类)中重写该方法 //加法运算的和 public virtual int Add() { return X + Y; } } //自定义类,该类继承自MyClass1 class MyClass2 : MyClass1 { //重写基类中的虚方法 //返回两个int型变量相加的和 public override int Add() { int x = 5; int y = 7; return x + y; } } internal class Program { static void Main(string[] args) { MyClass2 myClass2 = new MyClass2(); //实例化MyClass2的对象 //使用子类(派生类)MyClass2的对象实例化基类MyClass1的对象 MyClass1 myClass1 = (MyClass1)myClass2; myClass1.X = 3; //为MyClass1类中的属性赋值 myClass1.Y = 5; //为MyClass1类中的属性赋值 Console.WriteLine(myClass2.Add()); //调用子类(派生类)中的方法 Console.WriteLine(myClass1.Add()); //同意调用子类(派生类)中的方法 Console.ReadLine(); } } }