new、virtual、override、abstract 等-抽象

  • 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 方法,所以它还有覆盖(改写、重写)的特点。

相关阅读

  • C# 抽象类与接口的应用场景与应用方式区别
  • new、virtual、override、abstract 等-重载
  • new、virtual、override、abstract 等-隐藏
  • new、virtual、override、abstract 等-覆盖(改写、重写)
  • new、virtual、override、abstract 等-抽象
  • new、virtual、override、abstract 等-隐藏与覆盖实际操作

你可能感兴趣的