隐藏最主要的特点是关键字 new。
public class BaseClass
{
public void Do()
{
HttpContext.Current.Response.Write("基类方法");
}
}
public class DerivedClass : BaseClass
{
public new void Do()
{
HttpContext.Current.Response.Write("派生类方法");
}
}
new 不能位于返回值类型(这里是 void)之后。
调用:
DerivedClass dc = new DerivedClass();
dc.Do(); // 派生类方法
((BaseClass)dc).Do(); // 基类方法
dc 被转换成 BaseClass 后,其调用的就是基类的方法。
隐藏特点:
- 必须位于基类和派生类中;
- 方法名称必须相同;
- 参数类型、参数个数必须相同;
- 返回值类型可以不同;
- 应该使用 new,虽然不使用 new 也会运行,但在编译时会被警告;
- 调用派生类方法还是基类方法,取决于被什么类型的实例调用。
相关阅读