抽象类
抽象类具有以下特性:
-
抽象类不能实例化。
-
抽象类可以包含抽象方法和抽象访问器。
-
不能用 sealed(C# 参考)修饰符修改抽象类,这意味着抽象类不能被继承。
-
从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实实现。
在方法或属性声明中使用 abstract 修饰符以指示方法或属性不包含实现。
抽象方法具有以下特性:
-
抽象方法是隐式的虚方法。
-
只允许在抽象类中使用抽象方法声明。
-
因为抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。例如:
复制代码
public abstract void MyMethod();
-
实现由一个重写方法override(C# 参考)提供,此重写方法是非抽象类的一个成员。
-
在抽象方法声明中使用 static 或 virtual 修饰符是错误的。
除了在声明和调用语法上不同外,抽象属性的行为与抽象方法一样。
-
在静态属性上使用 abstract 修饰符是错误的。
-
在派生类中,通过包括使用 override 修饰符的属性声明,可以重写抽象的继承属性。
抽象类必须为所有接口成员提供实现。