继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

接口的作用

jeffpan
关注TA
已关注
手记 4
粉丝 12
获赞 766

里面都是抽象方法,还得去实现,那为什么还要实现它呀,直接实现这方法就不行了么?那么接口到底是干嘛用的?有什么好处?

我理解的就是规范一下方法名的定义,便于日后的维护,比如就像猫 狗叫,他们都实现一个叫声接口然后实现,这样你调用的时候都是调用同一个方法比如猫.叫声() 狗.叫声() 而不是猫.猫叫() 狗.狗叫() 其实就是统一命名的感觉。
可以实现多态

接口有点类似于父类,里面包含抽象方法和静态常量,抽象方法要在实现类重写,你现在可能觉得多此一举是指你的需求不够,以后你就会明白了

接口就是提供一个模板,提供一个规范,易维护。

usb接口是干什么用的?
直接实现,就相当于把U盘直接焊在主板上,
想要换摄像头的时候,就得把U盘焊下来,再把摄像头焊上去。
usb协议就是java中的接口,我要充电,只需要看说明书知道你这个充电器是基于usb协议的我拿来用即可。 同样生产充电器的既然说了他基于usb协议,就必须按照usb协议来生产
焊上去,耦合性高。可插拔,耦合性低。接口就是用来降低耦合性的。

接口中定义对象的基本行为,而实现类来实现行为的具体方式

举个例子来说,我要定义在数据库读取用户数据的类 UserDao,而正确的做法是把UserDao定义为接口, 然后写一个类实现 UserDao 接口,假设这个类叫 UserDaoImpl
UserDao u = new UserDaoImpl()
这时还看不出接口的作用,加入你原来的接口实现是针对 MySQL,现在你要换成 Oracle 数据库,你可以重新写一个实现类 UserDaoOracleImpl
UserDao u = new UserDaoOracleImpl()
你要做改变的只有这一行代码,加入你使用了Spring框架就更简单了
@Autowired UserDao userDao;
然后你在配置里配置一个 UserDaoXXXImpl 的 Java Bean,Spring 会给你自动注入进来
使用接口让需求改变减小对源代码的影响,减少了代码耦合度,利于项目开发和测试。这也是组合大于继承的编程思想,也就是面向对象编程后来的面向接口编程。
你如果不写接口,也就是开发时有一些固定代码,你没有接口就意味着要无数遍重新写,有了接口直接实现就行。万一这个功能是几万行代码,你不把这个作为接口,就等于每次都要写死了

接口简单说就是一个规范
如果住户就一台电视机 插头是3孔的

那么只要买一个3孔的插座板就行了。
嗯,很方便。
但住户家有很多电器,而电器的插头都不一样
那住户就得买N多的插座板了 如果是你 你原意吗?
这样就得定义一个规范,电视机插头 必须 是3孔的
电扇的插头必须是2孔的
于是,住户只要带有2孔和3孔的插座板就行了

extend 只能一个,但是implement 可以有很多
爸爸只能有一个,干爹却能有很多个
这么说能明白么,多态

接口是多态的一中表现形式,多态是什么,多态是java的三大特征之一,比方用面向对象思想解释多态:一个人他可以是孩子的父亲亦可以是人民的教师,哪么孩子的父亲可以有一种表现形式,教师可以又一种表现形式。反过来将接口当作这个人是不是就好理解了呢

我比较抽象的给你讲一下,听完我的,再让老师好好给你说说,学校的食堂有卖各种饭菜的,学生也很多,中午吃饭的时候,学校不可能让每一个同学的ID,都有一个ID唯一的窗口买饭,因为选择是多样性的。卖饭的窗口就是一个接口,一个学生就是一个.java类,每个类都能调用这个接口(在这个窗口买饭),也能调用别的接口,

简单的说 接口就是协议 协议就是你跟别人达成的约定
所以接口就是约定。

举例隔离
你写了一个集合类,存放一些类的对象,但是要求是每个对象加入到这个类中都要打印一下信息通知他已经加进来了。。这个功能的实现就确保这些对象中有一个方法,就是通知
但是所有对象都能加入这个集合类吗?不是吧,集合类说必须实现这个通知方法的类的对象才能加入,用什么保证呢?就用接口,你这个类实现了我这个notify接口了,我就认为你有这个通知方法,那么我就能调用这个方法,别人没实现这个接口的对象,即使有这个notify方法,我也认为你没有,因为你没跟我达成约定。
而实现了这个接口的类 就是和集合类达成了约定,就必须要实现通知的方法。

所以简单地说 接口就是约定。
你这个类实现了接口,就是告诉我你能做到我想要的。。。
所以为了保证你真能做到我想要的,实现接口的类一定要实现里面的方法。

打开App,阅读手记
29人推荐
发表评论
随时随地看视频慕课网APP

热门评论

我这里有个我个人认为比较好理解的例子可以参考一下: http://blog.moonlin.me/2016-04-13-%E6%8E%A5%E5%8F%A3%E5%88%B0%E5%BA%95%E6%9C%89%E4%BB%80%E4%B9%88%E7%94%A8.html

接口就是彼此间的一个约定。

查看全部评论