继承:
using System; class Parent { public void Msg() { Console.WriteLine("Parent"); } } class Child : Parent { } class Program { static void Main() { Parent ObjParent = new Parent(); Child ObjChild = new Child(); ObjParent.Msg(); //Parent ObjChild.Msg(); //Parent Console.ReadKey(); } }
覆盖:
using System; class Parent { public virtual void Msg() { Console.WriteLine("Parent"); } } class Child : Parent { public override void Msg() { Console.WriteLine("Child"); } } class Program { static void Main() { Parent ObjParent = new Parent(); Child ObjChild = new Child(); ObjParent.Msg(); //Parent ObjChild.Msg(); //Child Console.ReadKey(); } }
多态:
using System; class Parent { public virtual void Msg() { Console.WriteLine("Parent"); } } class Child1 : Parent { public override void Msg() { Console.WriteLine("Child_1"); } } class Child2 : Parent { public override void Msg() { Console.WriteLine("Child_2"); } } class Program { static void Main() { Parent Obj1 = new Child1(); Parent Obj2 = new Child2(); Obj1.Msg(); //Child_1 Obj2.Msg(); //Child_2 Console.ReadKey(); } }
隐藏:
using System; class Parent { public void Msg() { Console.WriteLine("Parent"); } } /* 有意隐藏应使用 new 关键字 */ class Child1 : Parent { new public void Msg() { Console.WriteLine("Child_1"); } } /* 无意隐藏会有提示, 但可用 */ class Child2 : Parent { public void Msg() { Console.WriteLine("Child_2"); } } class Program { static void Main() { Parent Obj1 = new Child1(); Parent Obj2 = new Child2(); Child1 Obj3 = new Child1(); Child2 Obj4 = new Child2(); Obj1.Msg(); //Parent Obj2.Msg(); //Parent Obj3.Msg(); //Child_1 Obj4.Msg(); //Child_2 Console.ReadKey(); } }