virtual 关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称作虚拟成员。虚拟成员的实现可由派生类中的重写成员更改。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref/html/vclrfVirtualPG.htm
abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csspec/html/vclrfcsharpspec_10_1_1_1.htm
interface
一个接口定义一个协定。实现接口的类或结构必须遵守其协定。
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref/html/vcrefTheInterfaceType.htm
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconInterfaces.htm
抽象类和接口
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csspec/html/vclrfcsharpspec_13_4_5.htm
如果一个基类方法要在派生类中被覆盖,就必须把这个基类方法申明为virtual
抽象方法和虚拟方法的区别在于:虚拟方法有一个实现部分,并为派生类提供了覆盖该方法的选项;相反,
抽象方法没有提供实现部分,强制派生类覆盖方法(否则派生类不能成为具体类)
当一个类需要从多个父类中继承时,由于C#只支持单继承,所以,此时只能用接口。
虚函数:可以被override的函数。
抽象类:不能被实例化的类。
接口:只有函数定义,没有函数实现,只能被继承,不能被实例化的类。
接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。