打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
每天学Java!Java中的接口有什么作用

对于Java初学者而言,接口是一个很麻烦的事。很多新手觉得定义了一个接口,但是在继承这个接口的类中还要写接口的实现方法,那不如直接就在这个类中写实现方法岂不是更便捷,还省去了定义接口。所以,小华君就和大家来一起看一下接口的作用是什么。

我们还是先用一个比喻来说一下接口。如果用餐饮来做比喻的话,接口就好比是一个招牌。比如你晚上下班了,想吃汉堡吃烤翅,你看见麦当劳了,你就知道自己要去这里了。麦当劳就是个接口,你看到了这个接口,就知道里边是卖汉堡卖烤翅的,就是实现接口。

也可以说接口就是一种规范,墙上的电源插座接口大家都见过吧,所有的电源插座接口都是按规范制作的,国家也出台了插座标准。也可以把它比作是一个接口。为什么要制定这种规范呢?因为有了这种规范,任何电器,只要有符合规范的插头,就都能获得电。任何插板生产商,公牛也好,子弹头也好,西门子也好,只要按照规范来做,生产出来的插板就一定能进行供电。每个厂家插座的生产技术、工艺都不一样,因为接口的implementation可以不一样,但是并不影响电器的正常工作。插座的内部实现对于电器来说是完全屏蔽的。

软件开发大多是一个协作性的工作,一般都是很多人一起完成,就像电器和插座都是不同人生产的,有了接口,即使在不同时间不同地点各自分开做事,最后也能实现整合。此外,软件在不断演化,有了规范就能实现无障碍衔接。

在一个类中直接写实现方法,的确可以省去定义接口,但是怎样保证这个接口就一个类去实现呢?如果多个类去实现同一个接口,程序员们怎么知道他们是有关联的呢。为了方便不是一个去实现,就需要统一标准,这也是为什么现在有些编程语言已经不把接口叫作interface,而叫protocol了。

接下来,我们再来用一个接口的例子来说明。程序员知道Comparable这个接口是用来比较两个对象的,那么如何去比较呢。数字有数字的比较方法,字符串有字符串的比较方法,自己定义的类也有自己的比较方法。

然后,在另外一个负责对象排序(不一定是数字)的代码里,也需要将两个对象比较。这两个对象是什么类型呢?如果用Object a,b可以吗?肯定不行,因为a > b 这样的语法无法通过编译。那用int a,b呢?也不行,因为遇见非数字,就无法处理。

这个时候,Comparable的作用就显示出来了。它告诉编译器,a b 两个对象都满足 Comparable 接口,也就是他们是可以进行比较的。具体怎么比较,这段程序不需要知道。所以,他需要一些具体的实现,Comparable 接口有一个方法,叫 compareTo。那么这个方法就是用来取代 <、> 这样的运算符。因为运算符是编译器保留给内置类型(整数、浮点数)进行比较用的,而不是一个广义的比较运算。

那到底什么时候需要通过接口建立规范呢?一般来说,为了抽象系统的某种公共行为,或者封装变化性,进行系统设计的时候需要抽取出接口,这样将来的系统会更加灵活。致谢写实现方式不定义接口的方式在确定性地场景下可以使用。不涉及分工协作、变化性、测试方便等因素时,就不需要用接口。比如为了一个Pojo的getter和setter,就没必要弄个接口和实现分离。

最后,还是把Java大神们的那句话拿出来跟大家说:接口和实现分离,面向接口编程。

小华君欢迎大家到北京华信智原了解更多关于Java的内容,今天,就酱~

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
比较java comparable和Comparator 区别
Java数组学习心得
比较comparable和Comparator
Java集合干货系列
cannot be cast to java.lang.Comparable解决办法
Java集合框架总结(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服