- new、virtual、override、abstract 等-重载
- new、virtual、override、abstract 等-隐藏
- new、virtual、override、abstract 等-覆盖(改写、重写)
- new、virtual、override、abstract 等-抽象
- new、virtual、override、abstract 等-隐藏与覆盖实际操作
覆盖最主要的特点是关键字 abstract,也可能使用 override。
抽象关键字 abstract,它可用于类、方法、属性、索引器、事件(本文以类、方法举例)。
- 可对类用 abstract,不对其方法用 abstract;
- 但若对方法用 abstract,其类必须用 abstract;
- 若类用了 abstract,方法没用 abstract,不表示方法也是 abstract。
抽象表示这类没有完全实现,不能用 new 抽象类() 来进行实例化,只能对抽象类进行继承。
那 abstract 又怎么和 override 扯在一起的呢?原来 abstract 的方法隐式为 virtual 方法。
示例:
public abstract class BaseClass
{
public abstract void Do();
}
public class DerivedClass : BaseClass
{
public override void Do()
{
HttpContext.Current.Response.Write("派生类方法");
}
}
调用:
DerivedClass dc = new DerivedClass();
dc.Do(); // 派生类方法
((BaseClass)dc).Do(); // 派生类方法,实际上这里没啥意思。
抽象的特点:
- 可对类用 abstract,不对其方法用 abstract;
- 但若对方法用 abstract,其类必须用 abstract;
- 若类用了 abstract,方法没用 abstract,不表示方法也是 abstract;
- 不能使用 new 来实例化抽象类;
- 抽象方法不能有主体,只需要在参数写完后,直接收括号,引号结束;
- 抽象的方法是隐式的 virtual 方法,所以它还有覆盖(改写、重写)的特点。
相关阅读
- new、virtual、override、abstract 等-重载
- new、virtual、override、abstract 等-隐藏
- new、virtual、override、abstract 等-覆盖(改写、重写)
- new、virtual、override、abstract 等-抽象
- new、virtual、override、abstract 等-隐藏与覆盖实际操作