一、new只是隐藏父类中的同名方法。基类和父类中都存在这个方法。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { BaseClass bcdc = new DerivedClass(); bcdc.Method2(); //结果:Base - Method2 Console.Read(); } public class BaseClass { public void Method2() { Console.WriteLine("Base - Method2"); } } public class DerivedClass : BaseClass { public new void Method2() //在子类中隐藏了父类的这个方法,父类总还存在这个方法。 { Console.WriteLine("Derived - Method2"); } } } }
二、override.在子类中重写父类的相同方法名。父类只能用 abstract、virtual修饰。
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { BaseClass bcdc = new DerivedClass(); bcdc.Method2(); //结果: Derived - Method2 Console.Read(); } public class BaseClass { public virtual void Method2() { Console.WriteLine("Base - Method2"); } } public class DerivedClass : BaseClass { public override void Method2() //重写了父类的方法 { Console.WriteLine("Derived - Method2"); } } } }