情况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()}
看来不能死读书,还是实际操作一下比较容易搞清楚:)
时间: 2024-10-12 02:41:08