Code using System;namespace ConsoleApplication1{ public class BaseClass { private int index = 0; public BaseClass () { Console .WriteLine ("base class constructor."); } public virtual void ForOver() { Console.WriteLine("baseOver:"+index .ToString ()); } } public class ChildClassWithOverride : BaseClass { private int index = 1; public ChildClassWithOverride(): base() { Console.WriteLine("child constructor"); } public override void ForOver() { Console.WriteLine("childOver:" + index.ToString()); } } public class ChildClassWithNew : BaseClass { private int index = 1; public ChildClassWithNew():base () { } public new void ForOver() { Console.WriteLine("childOver:" + index.ToString()); } } public abstract class AbstractClass { public abstract void DoWorkForOverride(); public void Dowork() { Console.WriteLine("AbstractClass.DoWork"); } } public class AbstractChildClass : AbstractClass { public override void DoWorkForOverride() { Console.WriteLine("AbstractChildClass.DoWorkForOverride"); } } class Program { static void Main() { ChildClassWithOverride childClassOverride = new ChildClassWithOverride(); ChildClassWithNew childClassWithNew = new ChildClassWithNew(); Console.WriteLine(); Console.WriteLine("------override base class function------"); childClassOverride.ForOver(); childClassWithNew.ForOver(); Console.WriteLine("------different between override and new------"); BaseClass baseClass; baseClass = childClassOverride; baseClass.ForOver(); baseClass = childClassWithNew; baseClass.ForOver(); Console.WriteLine(); AbstractChildClass AbstractChildClass = new AbstractChildClass(); Console.WriteLine("------overide base class------"); AbstractChildClass.DoWorkForOverride(); Console.WriteLine("------this is a Inheritance------"); AbstractChildClass.Dowork(); Console.WriteLine("------this is a Polymorphism------"); AbstractClass abstractClass = new AbstractChildClass(); abstractClass.DoWorkForOverride(); Console.ReadLine(); } }} 转载于:https://www.cnblogs.com/JessieDong/archive/2009/11/11/1601098.html