十年经验告诉你,如何正确的理解接口
这篇也算是店动力——从0到1设计开发进销存系统的记录总结的前传吧,因为在这个系统中大量的使用了接口,所以有必须专门把接口说一下。
说起接口大家都不陌生,尤其对于C#、Java等开发人员来说。
“什么是接口”,“什么是抽象类”,“接口和抽象类的相同点及区别”,这些话题大概是面试题中出场率最高的了,面试的人多了,那自然答案也是各种各样的。
【十年经验告诉你,如何正确的理解接口】
再看下文之前,自己可以先想一想,用自己的语言、自己的工作经验,把它的本质说一下。
另外,大家也可以把自己的理解说一下,互相探讨一番。
我虽然可以一句话就把接口的理解说完,但显而易见的后果就是:字数太少,无法上到首页。
因为我也是从一个菜鸟经过这么多年的经验慢慢的摸索、理解出来的,基于我对这个行业的热爱,因此我真的想帮助更多的人快速的成长,也自然想这篇文章上首页,让更多的人看到。
社会是在不段进步的,同样编程语言也是在进步的。早期的c、c++都没有接口的概念,后面推出的java、c#摒弃了c++的多继承概念,提出了接口的概念。刚才说了编程语言也是在进步的,因此接口的出现必然要比多继承好。不是吗?
说回上面的问题,大部分人在回答什么是接口、或者接口和抽象类的相同点及区别时,无非是把接口、抽象类的书本中的定义说一下。
可作为面试官的我们想要的答案是你自己对于接口、抽象类的理解,不是书本上的定义。
接口的本质其实是对实现最小功能的定义或者说约束。怎么理解这句话?
假设你现在要和其它系统之间对接,这时候关心的应该是:需要提供哪些方法及参数的结构,这也就是所谓的面向接口编程。
另外一个就是把所有的功能一个接口中,还是放到不同的接口?答案就不用我说了,这个也就是所谓的接口隔离原则:多个专用接口优于一个单一的通用接口
这两点一定要细品:
想一想C#中的IEnmuerable接口,是不是只是提供了一个最基本功能的定义?
再想一想List实现的接口有哪些?为什么要实现这么多接口?ICollection
换句话说:接口,它仅仅就是一个功能片段。
它可以像搭积木一样,把多个不同的接口组合在一起,变成一个包含完整功能的类。
另外,在拿到这个类之后,由于它实现了多个接口,那么这个类就可以应用于多个不同的场景了,即:复用。
接口,仅此而已。
推荐阅读
- 【第三十二期】春招 Golang实习面经 七牛
- 五邑大学校级蓝桥杯c语言试题,【智能制造学部】第十届“蓝桥杯”软件类校内选拔赛顺利举行...
- 蓝桥杯评分标准_第十届蓝桥杯软件个人赛校内选拔赛评分标准和选拔标准.doc...
- java蓝桥杯校内模拟赛_第十一届蓝桥杯校内赛校内选拔赛(2020蓝桥杯校选2-java.c)...
- JAVA|第十一届蓝桥杯校内赛/校内选拔赛(2020蓝桥杯校选3-java)部分解题思路
- 数据结构|数据结构 Java数据结构 --- 十大排序
- OpenStack学习系列之十二(安装ceph并对接OpenStack)
- 使用|使用 JavaScript 制作页面效果
- python|python学习笔记(十二)常用内建模块
- 《寒假算法集训》|《寒假算法集训》(专题十九)广度优先搜索