大话面向对象(四):接口
作者:强哥   类别:Java开发    日期:2017-12-08 17:38:27    阅读:2536 次   消耗积分:0 分

何为接口?既然是面向对象,所有的概念都是从对象中来,对象又从何而来?从真实世界中来,接口也不例外,我们对接口的理解只需要两个字即可概括:规格。

 

举个简单的例子,大家应该都有过攒机的经历,那么我们是否考虑过一个问题:为什么各个厂家的零部件居然可以安装在一起工作呢?答案当然谁都知道,因为我们对每一个零部件都定义了规格,内存条的插脚必须满足规格才能刚好与主板上的插槽相吻合,哪怕是一根网线,也必须满足RJ45的规格,才能刚好插到网卡的插口中,一旦特立独行,将没有市场,同样的,大家可以想像,如果世界上没有规格,将会变得乱七八糟。

 

就像现在的操作系统一样,没有一个统一的规格,特别是嵌入式操作系统,更是五花八门,带来的最大的问题就是一款软件需要开发N多的不同平台下的版本,于是乎如果你能开发出一个号称可以跨平台的软件的话,那么将备受欢迎。这只是没有办法的办法,如果在N多年前,当刚有操作系统的时候就能把操作系统的统一规格定义,如果以后哪家厂商要开发操作系统,必须按照这样的规格来进行,那该多好,不过,如果真这样了,恐怕好多程序员又要失业了。

 

言归正传,接口就是这样一种东西,定义一种规格,以保持团队开发的一致性和规范性。我们仍然举现实的例子来说明这个问题,我们定义一种规格:厂家生产的“门”,必须要满足两个条件,可以“开”,可以“关”,如果你的门不能“关”,将不是一个合格的门,当然,除了开关以外,你还可以定义你的门可以“锁”,可以“感应”等,无论你把门做得多花哨,你必须满足“开”和“关”的要求。

 

用JAVA首先定义这个接口IDoor(通常接口名以字母“I”为前缀,另外接口中不需要也不能定义任何实际的实现代码,只声明这个规格即可):

 

public interface IDoor {

   public void openDoor();

    public void closeDoor();

}

 

接口定义好以后,便可以定义具体实现的类,只不过这个类有点特别,它必须要实现接口中的两个方法,否则编译不通过,在此我们生成一个RoomDoor表示房间的门,不管什么门,总是要有开有关才行:

 

package code;
 
public class RoomDoor implements IDoor {
// 实现接口中的openDoor方法
public void closeDoor() {
System.out.println("Room's Door is open ...");
}
 
// 实现接口中的closeDoor方法
public void openDoor() {
System.out.println("Room's Door is closed ...");
}
 
// 扩展自己的方法lockDoor
public void lockDoor() {
System.out.println("Room's Door is locked ...");
}
}


 

可能我们会有这样的疑问,为什么我非得要implements它,还要受这么多限制,其实答案非常简单,如果我们造出一根不符合规格的内存条出来,插不进标准插槽,卖得出去吗?

当然,在JAVA语言体系中,还有一个非常重要的类型: 虚类或者叫抽象类(Abstract Class),这是同时具备了普通类和接口双重特性的一个类型,具备非常重要的作用。不仅可以实现抽象方法(与接口功能一致),同时也可以继承(跟普通类一致),很多时候我们都会选择使用抽象类而不是接口或者普通类。只要大家能够理解普通类和接口,那么理解抽象类将会非常容易,所以在此不再专门阐述。

 


蜗牛学院,只为成就更好的你!

你!敢不敢!用你三个月的时间,换你不一样的未来!

赶快关注蜗牛学院官方微信,了解更多信息吧!

20181009_153045_341.jpg

   
版权所有,转载本站文章请注明出处:蜗牛笔记, http://www.woniunote.com/article/46
上一篇: Servlet和Jsp页面数据交互三:常用的JSTL标签
下一篇: 大话面向对象(五):多态
提示:登录后添加有效评论可享受积分哦!
最新文章
    最多阅读
      特别推荐
      回到顶部