为什么要使用接口?

举个例子,如果你要做一个读取文件的功能,那么你得根据不同类型的文件写不同的函数。
如果不使用接口,那么每次使用的时候都要用特定的方法名,比如读取txt 文件方法名叫ReadTxt();读取xml文件方法名叫ReadXml();那每次读取txt文件的时候就要用ReadTxt(),读取xml文件要用ReadXml();如果这个方法有很多很多,那么用起来就很麻烦。
使用接口的话,让这些函数实现同一个接口(比如接口名字叫ReadFile),那每一次我不用关心该用哪个函数名,直接用ReadFile就好。并且接口里的方法可以共用,一样的代码不用重复写。
再一个例子,数据库有很多种,oracle,sql server,mysql,每个数据库的调用方法都会有不同,使用接口就不用关心是哪种数据库,直接调用就好。

发现一个博主说的很生动:https://blog.csdn.net/qq_34343303/article/details/81710240

如题,看看下面这个例子   :

现有狗 和企鹅两个类  ,狗会玩飞碟,企鹅会游泳,为什么要把玩飞碟和游泳的方法分别定义在两个接口里?如果
定义在接口反而显得代码更加累赘,因为还多了两个接口。你可能会想,干嘛不直接把玩飞碟的方法直接定义在狗类中,游泳
的方法直接定义在企鹅类中(这种情况下没有父类)。
假设这样一种情况:后面又多了一种宠物类型鸭子,鸭子也会游泳,你是不是又要在鸭子类中定义一个游泳的方法?在这里考
虑一下这个问题:企鹅会游泳,鸭子会游泳,具有共同的特性,既然有共同的特性,为什么不去抽取?抽取出一个父类。对,没
错,你可能会抽取出一个父类A,这个父类中有一个游泳的方法,然后鸭子类和企鹅类都继承这个父类。(看起来毫无问题)

接着继续:后面我们又发现,鸭子会唱歌了(呱呱呱),你又养了一种新的宠物鹦鹉,而且鹦鹉也会唱歌(嘤嘤嘤),到这里,
你又发现鸭子和鹦鹉具有共同的特性(唱歌),那就得继续向上抽取,在这个你会想,能不能把唱歌这个方法定义在刚才的A
类中,仔细想想,这样行不通(如果是把唱歌这个方法定义在A类中,刚才企鹅也继承了A类,那不就企鹅也会唱歌了【显然不合理
】),那就换种方式试试:把唱歌这个方法定义在另一个类中(B),然后鹦鹉类继承B类,鸭子类也继承B类(好,这里就出现问
题了:鸭子已经继承了A类了,不能再继承B类了,因为类只能单继承,又出现问题了。在这里联想一下,什么可以多继承【实
现】,当然是接口了),经过上面的思考,最终决定:把唱歌,游泳,这些方法分别定义在不同的接口里,然后鸭子类去实现
有唱歌方法的接口,同时也去实现具有游泳方法的接口    ,鹦鹉类去实现有唱歌方法的接口,这样鸭子既会游泳也会唱歌,鹦
鹉也会唱歌,狗会玩飞碟,企鹅会游泳,在这里接口的好处就体现出来了,更加的灵活,方便程序的拓展。在这个例子中,接
口体现的是一种能力(类实现了某个接口,这个类就具备了该接口的方法【功能】)
————————————————
版权声明:本文为CSDN博主「HouMoney」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34343303/article/details/81710240

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值