- new、virtual、override、abstract 等-重载
- new、virtual、override、abstract 等-隐藏
- new、virtual、override、abstract 等-覆盖(改写、重写)
- new、virtual、override、abstract 等-抽象
- new、virtual、override、abstract 等-隐藏与覆盖实际操作
隐藏最主要的特点是关键字 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 也会运行,但在编译时会被警告;
- 调用派生类方法还是基类方法,取决于被什么类型的实例调用。
相关阅读
- 覆盖和隐藏的访问修饰符
- C# 类属性可以用隐藏和覆盖吗?
- new、virtual、override、abstract 等-重载
- new、virtual、override、abstract 等-隐藏
- new、virtual、override、abstract 等-覆盖(改写、重写)
- new、virtual、override、abstract 等-抽象
- new、virtual、override、abstract 等-隐藏与覆盖实际操作