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

本文详细解析了C#中override与new关键字的作用及差异,通过实例代码演示了父类引用指向子类实例时,两种关键字如何影响方法调用的行为。在C#的面向对象编程中,正确理解并运用这两个关键字对于实现多态性和代码隐藏至关重要。
1476

被折叠的 条评论
为什么被折叠?



