与重写和新功能混淆C#

这个问题在这里已经有了答案:

  • 在C#中阴影和重写之间的区别? 5个答案

  • 当你将一个类成员标记为virtual它可以在子类中被覆盖。
  • 如果您想在子类中更改方法(在基类中声明为虚拟方法),则可以同时使用new关键字和override关键字,但它们之间存在差异

    使用new时 :如果您将子类的对象作为基类转换,然后调用该方法,则将运行基类实现

    使用覆盖时 :如果您将子类的对象作为基类转换,然后调用该方法,则子类实现将运行。

  • 这是代码

    AbstractClass instance = new DerivedClass();
    instance.SayGoodbye();  //See you later - In derived class I'm in  NEW  member
    

    但是如果你使用override

    AbstractClass instance = new DerivedClass();
    instance.SayGoodbye();  //Goodbye- abstract member n
    
    链接地址: http://www.djcxy.com/p/38131.html

    上一篇: Confused with override and new functionality C#

    下一篇: make abstract a method with body for overriding