最后! 真正了解接口的简单指南
对于许多新手程序员而言,了解接口可能是一项挑战。 这是了解它们的超级简单指南。
经典的解释是“接口就是合同”。 这是面试您工作的人们希望听到的。 但是“接口=合同”是什么意思?
好吧,首先,我们知道接口包含一种特殊的代码格式,它本身不执行任何任务,也就是说,一个接口可能具有方法签名(方法的开始部分),但是缺少所有代码功能! 实际的方法代码包含在仅实现 (继承的Interface版本)接口的类中。
// The Interface
// Notice that the interface only has a method signature. The method has no body.
public interface IExampleInterface
{
// return type, method name, required parameter types and names
void Method1(string parameter1, string parameter2);
}
除方法签名外,接口还可以包含属性和事件。
// The Class
// Implement the inteface by having the class "inherit" it.
public class MyExampleClass : IExampleInterface
{
public void Method1(string parameter1, string parameter2)
{
// do something
}
}
// Notice that the method signature here is exactly the same as the one in the interface.
当类实现特定的接口时,该类承诺遵循接口中包含的该特殊代码中定义的特定规则和规定。 在我们的示例中,我们的接口包含几个方法签名。 当我们的类实现接口时,它承诺至少包含与这些方法签名完全匹配的方法。 接口不关心方法中的代码,它只要求像我有{X}个方法签名(或属性)一样,实现类具有相同的确切数量(最少),并且它们完全匹配。
关于该合同如何运作的一个很好的例子就是看一家特许经营企业的运作方式。 由于“品牌知名度”,许多人光顾特定的公司。 想想您附近的大型连锁企业。 例如,让我们使用星巴克。 星巴克享誉全球,并已成为一家值得信赖的咖啡店,可以保证为您提供一定水平的服务和产品。 现在,如果您想开一家小型咖啡店,您会选择开设一家独立的咖啡店,还是要向星巴克支付特许经营费以使用其徽标和市场营销,以及必须遵守其公司规则和规定? 好吧,尽管独立咖啡店提供了更大的灵活性,但由于您提供的服务和产品的质量未知,客户可能不愿意光顾您的独立店,并且随时可能更改而不会发出警告。 另一方面,由于您与星巴克公司的“合同”,星巴克特许经营店的数量是已知的。 每个人都知道他们得到了什么,明确制定了包括退货,退款和其他客户满意度问题在内的所有政策。 星巴克在创建客户认可和信任的品牌方面做了很多早期,艰巨的工作,您只需遵循他们的公司规则,即可从这项辛勤工作中受益。
在我们的案例中,小型企业所有者将与同类企业相当,而星巴克公司将成为接口。 “合同”(您的面试官希望您提及)是您作为企业主与公司(星巴克/接口)签订的合同,以便从使用他们的工作中受益。 我们的接口有一组必须遵循的规则,在业务和软件开发中,这使事情保持良好,整洁,有条理和可预测。
From: https://hackernoon.com/finally-the-real-simple-guide-to-understanding-interfaces-8224c78bf01f