|
何为接口?既然是面向对象,所有的概念都是从对象中来,对象又从何而来?从真实世界中来,接口也不例外,我们对接口的理解只需要两个字即可概括:规格。
举个简单的例子,大家应该都有过攒机的经历,那么我们是否考虑过一个问题:为什么各个厂家的零部件居然可以安装在一起工作呢?答案当然谁都知道,因为我们对每一个零部件都定义了规格,内存条的插脚必须满足规格才能刚好与主板上的插槽相吻合,哪怕是一根网线,也必须满足RJ45的规格,才能刚好插到网卡的插口中,一旦特立独行,将没有市场,同样的,大家可以想像,如果世界上没有规格,将会变得乱七八糟。
就像现在的操作系统一样,没有一个统一的规格,特别是嵌入式操作系统,更是五花八门,带来的最大的问题就是一款软件需要开发N多的不同平台下的版本,于是乎如果你能开发出一个号称可以跨平台的软件的话,那么将备受欢迎。这只是没有办法的办法,如果在N多年前,当刚有操作系统的时候就能把操作系统的统一规格定义,如果以后哪家厂商要开发操作系统,必须按照这样的规格来进行,那该多好,不过,如果真这样了,恐怕好多程序员又要失业了。
言归正传,接口就是这样一种东西,定义一种规格,以保持团队开发的一致性和规范性。我们仍然举现实的例子来说明这个问题,我们定义一种规格:厂家生产的“门”,必须要满足两个条件,可以“开”,可以“关”,如果你的门不能“关”,将不是一个合格的门,当然,除了开关以外,你还可以定义你的门可以“锁”,可以“感应”等,无论你把门做得多花哨,你必须满足“开”和“关”的要求。
用JAVA首先定义这个接口(注:接口中不需要也不能定义任何实际的实现代码,只声明这个规格即可):
package com.agilejoy.rft;
public interface IDoor {
public void openDoor();
public void closeDoor();
}
接口定义好以后,便可以定义具体实现的类,只不过这个类有点特别,它必须要实现接口中的两个方法,否则编译不通过,在此我们生成一个RoomDoor表示房间的门,不管什么门,总是要有开有关才行:
package com.agilejoy.rft;
public class RoomDoor implements IDoor {
public void openDoor() {
System.out.println("Room's door is open ...");
}
public void closeDoor() {
System.out.println("Room's door is closed ...");
}
}
可能有人会问,为什么我非得要implements它,还要受这么多限制,其实答案非常简单,你如果造一个不符合规格的内存条出来,插不进标准插槽,卖得出去吗。
另外,对于下一节介绍的面向对象非常非常重要的特性:多态,接口必不可少。请关注下一节:[连载] 精通RFT-06: Java中的面向对象: 多态
(声明:本文版权归作者个人所有,如需转载,请注明出处,如有需要,请联系QQ: 15903523 (强子)) |
|