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

16人阅读 评论(0) 收藏 举报
分类:

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

 

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

 

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

 

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

 

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

查看评论

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

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

java中抽象类与接口的最本质的区别

今天看了篇文章就讲这个的,作者意思是本质区别是接口类是抽象类的抽象,我不认同。 我认为在java的设计意图中,抽象类是作为类的抽象,它注重这个东西是什么,但接口是能力的抽象,它不注重一个对象是什么,而...
  • upnow2014
  • upnow2014
  • 2015-03-28 10:55:53
  • 1673

抽象类与接口面试题汇总

1、abstract class 与 interface有什么区别: 含有abstr
  • hai_cheng001
  • hai_cheng001
  • 2014-07-22 13:16:41
  • 1888

小鸦-Java8抽象类与接口的区别

前序: 被不少考官问过, 这次想重新整理一下.我们以下面的表格作为参考 原地址: http://www.importnew.com/12399.html (侵删)首先, 我们必须明白, 抽象类是什么...
  • u014041227
  • u014041227
  • 2017-03-28 00:59:05
  • 487

接口和抽象类的联系和区别

一 接口和抽象类的相似性 1 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。 2 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法...
  • chengqiuming
  • chengqiuming
  • 2017-04-12 09:57:33
  • 10762

抽象类和接口的本质区别

1.抽象类是一个不完全的类,需要进一步专业化.接口只是一个行为的规范或规定;       2.接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法;       3.一个类一次可以实现若干个...
  • xiaokezone
  • xiaokezone
  • 2008-10-21 09:15:00
  • 2469

<Java>接口与抽象类,区别以及使用场景

顺便做个记录 接口和抽象类应该是Java语法中最常见的两个概念 关于两者,网上也是一搜一吨的对比,总体如下: 1,抽象类的成员可以具有访问级别 接口的成员全部public级别 2,抽象类可以包含...
  • jjjjjj123321
  • jjjjjj123321
  • 2017-01-06 11:42:11
  • 2846

C++中抽象类与接口的区别

一、抽象类和接口 抽象类:  抽象类是特殊的类,不能被实例化(将定义了纯虚函数的类称为抽象类);除此以外,具有类的其他特性; 重要的是抽象类可以包括抽象方法,这是普通类所不能的,但同时也能...
  • fandongguang0702
  • fandongguang0702
  • 2016-06-26 10:47:15
  • 781

JAVA-抽象类和接口的区别总结

首先.抽象类和接口都很好的提供了一种将实现和接口分离的方法..  一、抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没...
  • oshirdey
  • oshirdey
  • 2014-07-26 15:07:53
  • 1557

JAVA8新特性下的接口和抽象类的异同

Java中,抽象类和接口有相似的地方。下面我们就来细说说接口和抽象类的异同。 首先是相同的地方: 1. 接口和抽象类都能定义方法和属性。 2. 接口和抽象类都是看作是一种特殊的类...
  • wangxin1982314
  • wangxin1982314
  • 2017-04-26 15:38:07
  • 914
    个人资料
    持之以恒
    等级:
    访问量: 6万+
    积分: 1034
    排名: 4万+
    最新评论