重写(override):

子类中为满足自己的需要来重复定义某个方法的不同实现,需要用 override 关键字,被重写的方法必须是虚方法,用的是 virtual 关键字。它的特点是(三个相同):

  • 相同的方法名
  • 相同的参数列表
  • 相同的返回值

不同与C++多态,C++用虚函数实现动态多态,C#则为重写

  1. public class baseclass {
  2. public virtual void testfun() { Console.WriteLine("testBaseClass"); }
  3. }
  4. public class chirclass:baseclass
  5. {
  6. public override void testfun() { Console.WriteLine("override"); }
  7. }
  8. class TestClass
  9. {
  10. static void Main(string[] args)
  11. {
  12. baseclass baseclass=new baseclass();
  13. baseclass.testfun();
  14. chirclass baseclass2=new chirclass();
  15. baseclass2.testfun();
  16. //用父类的引用构造子类对象
  17. baseclass baseclass1 = new chirclass();
  18. baseclass1.testfun();
  19. }
  20. }
  21. }

小提示:经常有童鞋问重载和重写的区别,而且网络上把这两个的区别作为 C# 做常考的面试题之一。实际上这两个概念完全没有关系,仅仅都带有一个“重”字。他们没有在一起比较的意义,仅仅分辨它们不同的定义就好了。

C++多态

动态多态和虚函数