? ? ? ? ? ? ? ? ? ? ? ?表示一个类型派生于一个基类型,拥有改类型的所有成员字段和函数。
? ? ? ? ? ? ? ? ? ? ? ? 表示一个类型只继承了函数函数签名,没有继承任何实现代码。
? ? ? ? ? ? ? ? ? ? ? ? 使用 virtual 修饰符。虚方法可以被重写,重写使用override重写虚方法。
? ? ? ? ? ? ? ? ? ? ? ? 如果签名相同的方法在派生类和基类都有声明,但该方法没有分别声明为virtual和override,派生类方法就会隐藏基类方法。
? ? ? ? ? ? ? ? ? ? ? ? 从派生类中调用方法的基础版本:base<MethodName>()。可以使用base<MethodName>()语法调用基类中的任何方法,不必从同一个方法的重载中调用。
? ? ? ? ? ? ? ? ? ? ? ? abstract修饰符把类和函数声明为抽象类型。抽象类不能实例化,抽象函数不能直接实现,必须在非抽象来的派生类中重写。
? ? ? ? ? ? ? ? ? ? ? ? scaled修饰符把类和方法声明为密封类型。密封的类不能被继承,方法不能被重写。
修饰符 | 应用于 | 说明 |
public | 所有类型或者成员 | 任何代码均可访问该项 |
protrected | 类型和内嵌类型的所有成员 | 只能派生的类型能访问该项 |
interral | 所有类型或者成员 | 只能在它包含的程序集中访问该项 |
private | 类型和内嵌类型的所有成员 | 只能在它包含的程序集中访问该项 |
protected interral | 类型和内嵌类型的所有成员 | 只能在它包含的程序集和派生类型的任何代码中访问该项 |
修饰符 | 应用于 | 说明 |
new | 函数成员 | 成员用相同的签名隐藏继承的成员 |
static | 所有成员 | 成员不作用于类的具体实例 |
virtual | 仅函数成员 | 成员可以由派生类重写 |
abstract | 仅函数成员 | 虚拟成员定义了成员签名,但没有提供实现代码 |
override | 仅函数成员 | 成员重写了继承的虚拟或抽象成员 |
? ? ? ? ? ? ? ? ? ? ? ? 声明接口和声明抽象类型完全相同,声明接口使用修饰符 interface。接口不允许提供接口中任何成员的实现方式。
? ? ? ? ? ? ? ? ? ? ? ? 接口只能包含:方法,属性,索引器,事件。
? ? ? ? ? ? ? ? ? ? ? ? 接口不能实例化,只能包含其成员的签名。接口不能有构造函数,也不能有字段。接口定义也不允许包含运算符重载。
? ? ? ? ? ? ? ? ? ? ? ? 接口可以彼此继承,继承方法和类的继承方式相同。