接口的功能及意义

转自:https://www.zhihu.com/question/20111251/answer/16585393


接口就是个招牌。

比如说你今年放假出去杭州旅游,玩了一上午,你也有点饿了,突然看到前面有个店子,上面挂着KFC,然后你就知道今天中饭有着落了。

KFC就是接口,我们看到了这个接口,就知道这个店会卖炸鸡腿(实现接口)。

那么为神马我们要去定义一个接口涅,这个店可以直接卖炸鸡腿啊(直接写实现方法),是的,这个店可以直接卖炸鸡腿,但没有挂KFC的招牌,我们就不能直接简单粗暴的冲进去叫服务员给两个炸鸡腿了。

要么,我们就要进去问,你这里卖不卖炸鸡腿啊,卖不卖汉堡啊,卖不卖圣代啊(这就是反射)。很显然,这样一家家的问实在是非常麻烦(反射性能很差)。
要么,我们就要记住,中山路108号卖炸鸡,黄山路45号卖炸鸡(硬编码),很显然这样我们要记住的很多很多东西(代码量剧增),而且,如果有新的店卖炸鸡腿,我们也不可能知道(不利于扩展)。

例如:先是A的代码
第一天A写了个接口
public interface aWriteInterface{
public void func();
}
A调用里边的功能func
aWriteInterface awrite;
awrite = xxx
awrite.func()

第二天然后B实现接口
public class B implements aWriteInterface {
public void func() {
System.out.println("B已经实现");
}
}
然后B将上边的awrite = xxx改为 awrite = new B();
这样就诠释了‘接口是个规范’这句话。

/// tips:接口中的所有属性都是公开静态常量,方法为公开抽象方法。

猜你喜欢

转载自blog.csdn.net/lyj434786736lyj/article/details/79500270