override :
方法提供从基类继承的成员的新实现。 通过 override 声明重写的方法称为重写基方法。 重写基方法必须具有与 override方法相同的签名
new :
关键字可以显式隐藏从基类继承的成员。 隐藏继承的成员时,该成员的派生版本将替换基类版本。 虽然可以不使用 new 修饰符来隐藏成员,但将收到编译器警告
到底什么意思呢?
其实就是,当父类指向子类引用的时候,就能看出区别了。
当A c=new C()时,C实现的Test方法被隐藏了!
static void Main(string[] args) { A b = new B(); b.Test(); A c = new C(); c.Test(); Console.WriteLine("==========="); B b1 = new B(); b1.Test(); C c1 = new C(); c1.Test(); Console.ReadLine(); } public class A { public virtual void Test() { Console.WriteLine("TestA"); } } public class B:A { public override void Test() { Console.WriteLine("TestB"); } } public class C : A { public new void Test() { Console.WriteLine("TestC"); } }
结果: