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");
}
}
结果: