接口
接口是属于引用类型。
接口可以用来描述属于类或结构的一组相关功能,即定义一种协议。
类或结构可以实现接口,同时必须遵循它们所实现接口定义的协议。
接口定义一种协议,实现该接口的类或结构必须遵循该协议。
一个几口可以继承与一个或多个其他接口,一个类或结构也可以实现一个或多个接口。
接口可以包含4中成员:方法、属性、事件和索引器。
接口本身不提供它所定义的成员的实现,它仅仅指定实现该接口的类或结构必须提供的成员。
抽象类
抽象类使用abstract修饰符,它用于表示所修饰的类是不完整的,并且它只能用作基类。
抽象类与非抽象类在以下4个方面的区别:
■抽象类不能直接实例化。如果抽象类使用new运算符,则发生编译时错误。
■允许(但不要求)抽象类包含抽象成员。
■抽象类不能被密封。
■当从抽象类派生非抽象类时,这些非抽象类必须实现所继承的所有抽象成员,即重写这些抽象成员。
接口和抽象类的区别
■一个类能实现多个接口,但只能有一个父类。
■接口中不能包含非抽象方法,但抽象类中可以有。
■抽象类是一个不完整的类,需要进一步细化;而接口只是一个行为的规范,即一种协议。
■接口并不属于继承结构,它实际与继承无关,因此无关的类也可以实现同一个接口。
■接口基本不具备继承的任何基本特点,它只是承诺了能够调用的方法。
■接口可以用于支持回调,用于回调的接口仅仅是提供指向方法的指针。