设计模式的师祖GoF,有句名言:Program to an interface, not an implementation,表示对接口编程而不要对实现编程,
通常用大写字母“I”加英文单词的方式定义接口的名称,这样可以方便地识别接口和类。
接口与类相比有许多不同,两者的区别主要体现在以下几个方面:
- 接口可以用任何可访问性来声明,但接口成员必须全都具有公共可访问性。也就是说,定义接口的成员时不能使用访问修饰符。
- 不能向成员或接口自身附加安全性权限。不能使用static、virtual、 abstract和sealed来定义
- 接口不能定义构造函数。显然接口负责功能的定义,不能提供代码的实现。因此实现构造函数的定义也是没有意义的。
- 接口中不允许定义字段。
接口和抽象类的异同
- 接口和抽象类都不能实例化。
- 接口不能包含方法的定义,抽象类可以。
- 接口继承的类必须实现实现其所有成员,抽象类则不必。
- 类可以继承自多个接口,但只能继承一个类。