我认为界面有 3 个主要好处是正确的吗?
- 必须创建的蓝图(我也听到其他人将其称为合同)。
- 多态性。
- 与继承(IMO 有很多相似之处)不同,您可以有许多接口
还有其他加分或减分吗?有人不同意我的3分吗?
我认为界面有 3 个主要好处是正确的吗?
还有其他加分或减分吗?有人不同意我的3分吗?
“蓝图”隐喻对类比对接口更有效,但“契约”隐喻非常准确。接口指定了其他类在公共方法方面的期望,而没有说明底层实现。在类之间的继承往往由is-a关系组成的情况下,接口可以被认为是works-as-a关系,尽管我认为后一个术语并不常用。
我要补充一点,接口的使用在某种程度上有助于创建自记录代码。例如,您的类实现的接口描述了该类支持的功能。因此,您最终会得到如下代码:
if (someClass is ISearchable)
{
someClass.Search();
}
具有相同接口的两个对象不需要以其他方式相关。
所以你可以有 - 花 - 卡车 - 恐龙
都具有相同的界面 - IColor
即使它们是完全不同的对象。