何为接口?既然是面向对象,所有的概念都是从对象中来,对象又从何而来?从真实世界中来,接口也不例外,我们对接口的理解只需要两个字即可概括:规格。
举个简单的例子,大家应该都有过攒机的经历,那么我们是否考虑过一个问题:为什么各个厂家的零部件居然可以安装在一起工作呢?答案当然谁都知道,因为我们对每一个零部件都定义了规格,内存条的插脚必须满足规格才能刚好与主板上的插槽相吻合,哪怕是一根网线,也必须满足RJ45的规格,才能刚好插到网卡的插口中,一旦特立独行,将没有市场,同样的,大家可以想像,如果世界上没有规格,将会变得乱七八糟。
就像现在的操作系统一样,没有一个统一的规格,特别是嵌入式操作系统,更是五花八门,带来的最大的问题就是一款软件需要开发N多的不同平台下的版本,于是乎如果你能开发出一个号称可以跨平台的软件的话,那么将备受欢迎。这只是没有办法的办法,如果在N多年前,当刚有操作系统的时候就能把操作系统的统一规格定义,如果以后哪家厂商要开发操作系统,必须按照这样的规格来进行,那该多好,不过,如果真这样了,恐怕好多程序员又要失业了。
言归正传,接口就是这样一种东西,定义一种规格,以保持团队开发的一致性和规范性。我们仍然举现实的例子来说明这个问题,我们定义一种规格:厂家生产的“门”,必须要满足两个条件,可以“开”,可以“关”,如果你的门不能“关”,将不是一个合格的门,当然,除了开关以外,你还可以定义你的门可以“锁”,可以“感应”等,无论你把门做得多花哨,你必须满足“开”和“关”的要求。
用JAVA首先定义这个接口IDoor(通常接口名以字母“I”为前缀,另外接口中不需要也不能定义任何实际的实现代码,只声明这个规格即可):