有句话是接口用于封装 、委托用于解藕、事件用于多观察者、虚方法用于多态
但是virtual方法和abstract方法以及C#接口的使用很容易混淆,现在来讨论一下三者的区别。前两者都牵涉到在派生类中与override的配合使用。
一、Virtual方法(虚方法)
virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:
情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。
情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,
该虚方法使用的是派生重写的方法。
二、Abstract方法(抽象方法)
abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。
请务必将抽象方法放在抽象类中。派生类必须全部实现父类的方法。
三、Interface
接口中的方法没有具体实现,也就是没有方法体,必须由继承者去实,一个类最多只能继承一个抽象类,但可以实现多个接口。
public interface InterfaceTest
{
/// <summary>
/// 我是接口,请务必把我全部实现
/// </summary>
void Istr();
string Igetstr();
}
此接口包含两个方法,继承者必须全部实现。
2、定义一