美文网首页
c#中virtual、override、new的区别

c#中virtual、override、new的区别

作者: 向前ing_ | 来源:发表于2019-03-31 21:25 被阅读0次

Virtual 

  用于父类中,声明某方法可以重写,该方法不能是static; 

override(覆盖继承) 

  用于子类中,重写父类中用virtual/override/abstract关键字声明的方法; 

new(隐藏继承) 

  用于子类中,可修饰父类中有或无virtual声明的方法; 

  如果在父类中有与父类同名同参的方法时,C#会隐式在子类前添加一个new关键字。 

【区别】override与new 

  当将一个子类实例赋值给父类实例,在子类实例与父类实例中分别调用该方法时:使用override修饰的都将调用子类方法,而使用new修饰的会分别调用子类方法和父类方法。 

  New和Override这两个关键字是互斥的。不可以同时使用。  

【区别】virtual与abstract 

  virtual:用于父类中声明该方法可被重写。 

  abstract:只能用在抽象类中声明抽象方法,本身不能实现任何功能(因此必须在子类中override),不能实例化。 

  两者除了在子类中同样可以用override重写这个相同点之外,没有其他关系。 

相关文章

  • c#中virtual、override、new的区别

    Virtual 用于父类中,声明某方法可以重写,该方法不能是static; override(覆盖继承) 用于子类...

  • C#中new和override的区别

    先看如下实例代码: 输出结果: override即覆盖重写的意思,指子类继承父类后,重写并覆盖了父类的某个方法,子...

  • C#中的override和new的区别

    之前做项目很少用到虚方法,并且自己还一直存在一个误解:虚方法只能放在抽象类中。其实虚方法和抽象类没有必然的关...

  • C#多态的几种方法对比

    方法替换(new) 和 虚函数virtual 重写override 抽象方法 abstract 使用抽象类的情况:...

  • c# new与override

    override关键字表示重写(覆盖),对于加上override关键字的属性或函数将完全覆盖基类的同名虚属性或虚函...

  • 17.03.11 .Net基础(二)

    多态 虚方法 virtual override 抽象类 abstract override 接口 interfac...

  • C# abstract virtual sealed

    参考简单易懂的解释c#的abstract和virtual的用法和区别[https://blog.csdn.net/...

  • c#类的方法的重写

    只有abstract、virtual、override修饰的方法才可以在子类的方法中重写;其中,有abstract...

  • 2秒后跳转

    new Thread(new Runnable(){ @Override public v...

  • 【原创】C# Sealed、new、virtual、abstra

    1、sealed 密封类不能被继承,密封方法可以重写基类中的方法,但其本身不能在任何派生类(子类)中 进一步重写。...

网友评论

      本文标题:c#中virtual、override、new的区别

      本文链接:https://www.haomeiwen.com/subject/zyvybftx.html