接口——从事物的共同点出发


本文主要从现实世界的接口出发,进行一个对接口含义的初步分析,并且对应到java中是怎样的含义的一个讨论。


生活中的接口

在生活中我们经常会听说这样那样的接口,比如经常使用电脑的人知道USB接口,显示器接口,还有手机上的耳机接口等。不单是计算机,还有电视机,空调等一些家用电器。遥控器便可类比于一个接口,它可以遥控电视机的具体行为。通过分析这些接口的共性,我们会得到一些有用的结论。

首先问你一个问题,一个接口对应几个对象?你可能毫不犹豫地回答:两个。但这个答案是错的。很显然看到接口我们会联想到它是一个事物联系另一个事物的中介(类似于两个岛之间的桥),可能你也会联想到其它事物,这里只讨论这种情况。由此说来接口通常包含两个对象,这样分析没错,但是请注意,我们刚才的分析只考虑了接口是某种中介,它可以将两个事物连起来,而忽略了接口的作用,即它存在的意义。

继续讨论遥控器。它存在的意义是什么?当然,它可以使我们更方便的挑选频道,即使是离电视机很远的地方(只要不超出信号范围)也能选择自己想要的功能。请注意功能这个词,遥控器上每一个按钮对应一个功能,按下它电视机会有相应动作。电视机负责实现某个功能,而遥控器仅仅把它声明出来化作一个按钮。遥控器的作用显而易见,它可以方便我们实现电视机的一些功能。但是一个遥控器可能不止遥控一个电视机,市面上有一种万能年遥控器,它可以遥控多种型号的电视机,它可能实现了某种规范和约束,这里不作细究。反过来思考,一台电视机也可能被两种遥控器操作,一种是原装的,一种是万能的。

因此我们可以说,接口不一定对应两个对象,只要符合某种协议,一个接口可以对应多个对象,一个对象也可以实现多个接口。


举一反三

分析到这里,一些更有趣的现象开始显现。

在生活中,我们会遇到很多事物,每个事物都有属于它的类别(在“类——改变世界”中有讨论),之前我们分析了类之间的联系。这种联系通常指一个类使用了另一个类的成员变量或方法。这是一种直接的单纯的联系,如果我们想用其它种类的联系呢?

我们可以先分析想要联系的两个类,为了形象的表达我的理解。举一个例子,动物类中的马和羊。马和羊是两个不同的类,虽然它们都是动物类(抽象类,以后会介绍)。有一天马和羊在一片草地上吃草,它们吃草的状态甚至很相像!这时突然一头狮子从远处袭来(它可能早有预谋),羊可能是第一个跑的,当然马也会跑,狮子吼叫着去追一只羊,自然界总是充满未知。

好了,先不管羊有没有被吃掉,我们分析刚才的情景。三个动物都是有联系的,这很显然。表面的联系即马和羊有共同的行为——吃草、逃跑,狮子也有跑动,它企图吃掉羊,这也是一种联系。那么它们是怎么联系到一起呢?如果细心的话会注意到本文的标题。答案已经出来了,通过拥有共同的行为。接着分析,马、羊和狮子都可以吃东西,奔跑,这可以说是它们的共同点,它们因为这些共同点而被定义为动物类(非绝对,可能还有其它共同点)。所以动物类又有一个新的含义,它描述一些具有共同特点(如吃、跑)的事物的集合。如果一个动物拥有这些特点,那么它可能属于动物类,如果一个事物是动物,那么它一定拥有这些特点。联系之前分析的接口,我们可以抽象的把动物类比作一个动物的接口,只要实现了这个接口的就一定是动物,并且拥有其特点(或者说接口的功能)

综上分析,接口是描述一些具有共同特性的事物的抽象类。它定义了这些共同特性,但是不具体实现它们。


程序中的接口

Java中接口具有无可比拟的特点和优势。简单说,接口是为了实现某些功能的类。凡是使用这个接口的类都可以使用这些功能,前提是它有实现功能的具体方法。

根据现实世界的描述,我们将很容易理解Java中的接口。它也是用来描述一些具有共同特性的类的抽象类,任何拥有这些共性的类都可以使用这个接口,当然,Java中也有一些类没有这些共性,但它依然可以使用这个接口(决定权在于程序开发者),它可以实现那些共性的方法,来完成相应的功能。

综合分析,Java中接口就是为程序员或用户提供了一个层次架构,接口处于架构的顶层,下层是具体的类,它们通过接口联系到一起,它们都具有一些共同特性,当然也有它们独立的特性。通过这个架构,我们可以清晰的看到各个类之间的关系,从而可以使我们更好地做出决策。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lingpy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值