zoukankan      html  css  js  c++  java
  • C#Virtual和Override的几种组合

    情况1:

     
    class A{public void Show()}
    class B:A{public void Show()}
    

      

    编译通过,有警告让在B的方法里添加new关键字,以便将A的方法隐藏

    编译时绑定(根据声明类型调用方法)

    情况2:

    class A{public virtual void Show()}
    class B:A{public void Show()}

    编译通过,有警告让在B的方法里添加new或者override关键字,默认将A的方法隐藏

    编译时绑定(根据声明类型调用方法)

    情况3:

    class A{public virtual void Show()}
    class B:A{public override void Show()}
    

      

    编译通过

    运行时绑定(根据实际类型调用方法)

    情况4:

    class A{public void Show()}
    class B:A{public override void Show()}
    

      

    编译错误,被override的方法必须是abstract、virtual或者override的

    结论1:若想使用动态绑定(运行时绑定)

    class A{public virtual void Show()}
    class B:A{public override void Show()}
    

      

    结论2:若想使用静态绑定(编译时绑定)

    class A{public void Show()}
    class B:A{public new void Show()}
    

      

    看来不能死读书,还是实际操作一下比较容易搞清楚:)

  • 相关阅读:
    English trip V1
    English trip V1
    第一类斯特林数
    bzoj 3601 一个人的数论
    bzoj 4407 于神之怒加强版
    bzoj 2693 jzptab
    bzoj 4184 shallot
    luogu P3920 [WC2014]紫荆花之恋
    bzoj 4269 再见Xor
    luogu P2183 [国家集训队]礼物
  • 原文地址:https://www.cnblogs.com/binyao/p/4875707.html
Copyright © 2011-2022 走看看