1、接口作为类型而存在
接口是类型(class)一般行为的定义和契约。作用主要有:定义多个类型都需要的公共方法和属性;作为一种不可实例化的类型存在。实现了接口的类或结构必须实现接口定义的每一个属性和方法,这些方法在设计或功能上往往是相关的。
2、接口和抽象类:
相同之处:两者都不能产生实例对象,都可以作为一种契约和定义被使用;
不同:
- 接口没有实现部分,但抽象类可以包含部分实现代码;
- 接口没有字段,但抽象类可以包含字段;
- 接口可以被结构(struct)继承,但抽象类不行;
- 抽象类有构造函数和析构函数;
- 接口仅能继承自接口,而抽象类可以继承自其他类和接口;
- 接口支持多继承而抽象类仅支持单重继承。
接口不允许包含操作符重载,其原因并非它不能实现,而是由于接口是一个公共契约,会公布给其他类型语言使用,如果在接口中实现运算符重载会引起不同语言之间的兼容问题。
接口定义的成员也不允许有修饰符,这是因为接口本身就是public的,它要求其它成员必须是公有的,否则这样的接口就没有任何意义。
3、c#中的接口和com接口
两者的不同:前者不需要支持任何com基础结构。
共同特征:提供契约而非实现