知识大全 使用Override和New关键字进行版本控制

Posted

篇首语:无私是稀有的道德,因为从它身上是无利可图的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用Override和New关键字进行版本控制相关的知识,希望对你有一定的参考价值。

使用Override和New关键字进行版本控制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  C# 语言经过专门设计 以便不同库中的基类与派生类之间的版本控制可以不断向前发展 同时保持向后兼容 这具有多方面的意义 例如 这意味着在基类中引入与派生类中的某个成员具有相同名称的新成员在 C# 中是完全支持的 不会导致意外行为 它还意味着类必须显式声明某方法是要重写一个继承方法 还是一个仅隐藏具有类似名称的继承方法的新方法

  C# 允许派生类包含与基类方法名称相同的方法

  基类方法必须定义为 virtual

  如果派生类中的方法前面没有 new 或 override 关键字 则编译器将发出警告 该方法将有如存在 new 关键字一样执行操作

  如果派生类中的方法前面带有 new 关键字 则该方法被定义为独立于基类中的方法

  如果派生类中的方法前面带有 override 关键字 则派生类的对象将调用该方法 而不调用基类方法

  可以从派生类中使用 base 关键字调用基类方法

  override virtual 和 new 关键字还可以用于属性 索引器和事件中

  默认情况下 C# 方法不是虚方法 如果将一种方法声明为虚方法 则继承该方法的任何类都可以实现其自己的版本 若要使方法成为虚方法 必须在基类的方法声明中使用 virtual 修饰符 然后 派生类可以使用 override 关键字重写基虚方法 或使用 new 关键字隐藏基类中的虚方法 如果 override 关键字和 new 关键字均未指定 编译器将发出警告 并且派生类中的方法将隐藏基类中的方法          class A                            public A()                                    Console WriteLine( A );               

  public virtual void Fun()                                    Console WriteLine( A Fun() );               

  public virtual void Fun ()                                    Console WriteLine( A Fun () );               

  public void Fun ()                                    Console WriteLine( A Fun () );                           

  class B : A                            public B()                                    Console WriteLine( B );               

  public new void Fun()                                    Console WriteLine( B Fun() );               

  public override void Fun ()                                    Console WriteLine( B Fun () );               

  public void Fun ()                                    Console WriteLine( B Fun () );                           

  static void Main(string[] args)                            A a = new B();                a Fun();                a Fun ();                a Fun ();                Console Read();           

  输出

  A    B    A Fun()    B Fun ()    A Fun ()

   ——    OVERRIDE和NEW的方法都必须是基类中VIRTUAL或ABSTRACT的方法

   ——    OVERRIDE的方法是可以通过BASE前缀调用基类中被OVERRIDE的方法的

   ——    NEW的方法是一个全新的方法 不能使用BASE前缀来调用基类中被NEW后的方法

  override 覆蓋(旧的没有了)    new 新的(新旧共存)

cha138/Article/program/net/201311/12593

相关参考

知识大全 Java中new关键字和newInstance方法的区别分享

Java中new关键字和newInstance方法的区别分享  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 C#编程中的 New 关键词的几种用法

C#编程中的New关键词的几种用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 C#编程中的 New 关键词的几种用法[1]

C#编程中的New关键词的几种用法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前段时间

知识大全 C#编程中的 New 关键词的几种用法[3]

C#编程中的New关键词的几种用法[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!newpub

知识大全 C#编程中的 New 关键词的几种用法[2]

C#编程中的New关键词的几种用法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下是引

知识大全 Java中overload和override的区别

Java中overload和override的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 探讨如何在Eclipse中过滤版本控制文件.svn

探讨如何在Eclipse中过滤版本控制文件.svn  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!l

知识大全 VS和SQL Server对存储过程进行版本排序

VS和SQLServer对存储过程进行版本排序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  概

知识大全 初始化类时newInstance和new的区别

初始化类时newInstance和new的区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

采用双重冗余变送器对次重要关键参数进行测量时,在控制系统设计中采取了那些控制策略?

采用双重冗余变送器对次重要关键参数进行测量时,在控制系统设计中采取了那些控制策略?参考答案:采用双重冗余变送器对次重要关键参数进行测量时:1.若二个信号的偏差超出一定的范围则报警,并将受影响的控制系统