论接口与抽象类的真正区别 抽象类跟接口的本质区别在于,抽象类是为了重用,接口是为了解耦。

63 篇文章 0 订阅

 关于接口与抽象类的区别有着千篇一律的答案,我就不重复那些了什么可以实现多个接口,但只能继承一个类;抽象类中可以有方法是的实现,而接口没有等等......

 

     那都没有说错,但没有说的问题的关键为什么接口跟抽象类有那些不同这些不同的根源是什么根源是它们的真正含义,或说作用是截然不同的不同在哪里一言以辟之, "抽象类是为了把相同的东西提取出来就是为了重用而接口的作用程序里面固化的契约是为了降低偶合." 下面进行详细阐述.

 

     先说抽象类它的作用归根到底其实就是为了重用这个重用包含几个层次的重用都知道的方法重用几个类有共同的特质我们就把他们公用的东西提取出来搞了个父类而这个父类有些方法不知道怎么实现就搞成抽象的吧所以抽象类就诞生了还有一个重用层次是结构的层次很典型的就是 Template模式它重用的不是一般的方法,而是做某类事情的通用算法,我称之为结构的重用.

 

     再谈接口这是我想重点说的因为我想让接口真正回归它本来的面目接口就是契约软件系统内部的契约.那电脑硬件打比方内存条的卡口就规定好多长,卡位在哪这样造主板的按这个契约留好口造内存的外形也按这个造都造好了才能工作任何一方不守规矩,直接导致造电脑失败这个造电脑主板跟内存接口是什么是我们看到的主板上那个卡口吗不是接口是内存厂商跟主板厂商之间的契约这份契约可能是一份双方签字的文档,也可能是一个电话达成的共识.  而编程语言的接口Interface, 就对应那分签字的文档或是一个电话的共识只是它是程序化了的相关双方都没有办法违约的;我告诉你了我要这个接口你也答应实现那你就必须实现否则编译就过不了所以它是一种固化的强制的契约.

 

   搞清楚了接口跟抽象类的这个本质区别它们真正的作用就不会再说"这个地方用抽象类还是接口都可以"这样的话也许的确是都可以,但是该用哪个呢?

 

 

     ----------------

     本贴在论坛隐藏,但大虾们并没有说出像样的不同意见在此补充一下,

      当一个类实现一个接口,就是对所有其他说,我现在可以做这个事情了! 就是完成了interface规定的契约 或说协议。 而一个类实现另一个类时,并没有这个功能,它最多只是做了些同父类不一样的事情而已。

----------------------------------------------------------------------

张瑜,Mybeautiful, zhangyu0182@sina.com.

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值