接口和抽象类的区别?

mengrufeng007 2013-02-26 09:02:08
也工作了很长时间了,可是一直搞不太懂接口和抽象类的区别和联系到底是怎么回事,面试的时候感觉好多公司都爱问这个问题,请大牛们给分析一下。
...全文
504 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
lg_asus 2013-05-24
  • 打赏
  • 举报
回复
顶tank, 例子恰当+条理清晰。 haha~~~ time to close your post, OP.
fonyer 2013-05-24
  • 打赏
  • 举报
回复
引用 楼主 mengrufeng007 的回复:
也工作了很长时间了,可是一直搞不太懂接口和抽象类的区别和联系到底是怎么回事,面试的时候感觉好多公司都爱问这个问题,请大牛们给分析一下。
接口是特殊的抽象类,详见我的日志:http://blog.csdn.net/fonyer/article/details/8961268
wp306127875 2013-05-24
  • 打赏
  • 举报
回复
接口是抽象类的一种特例,即接口里面全部都是抽象方法。而抽象类里面可以定义抽象方法,也可以定义具体的方法。接口要求实现,抽象类是继承
wey580231 2013-03-03
  • 打赏
  • 举报
回复
面向接口编程,比如java sql包下面很多是接口,它本身并不提供实现,而是由你的数据库去实现,你要回想用我的这个类,那么就必须按照我的定义来实现。简单说就是规范,这些都是一流公司做的哟。二流,三流公司只能跟在他们后面。
bird_cat 2013-03-02
  • 打赏
  • 举报
回复
引用 10 楼 shine333 的回复:
窃以为: 接口是can do something,是种契约,仅代表,实现它的类的实例,(除了出Exception的情况)一定能完成某(些)个任务。但是具体如何完成,你不知道,你也不需要知道也不应该关心 抽象类是is something/has some properties。抽象类当然也能完成一些任务,但是,他除了完成这(些)个任务以外,还被强制规定死了,有些其他……
这个好像是head first 设计模式中的 策略设计模式,多用组合,少用继承,用接口会更加灵活,不过还是哟啊具体问题具体分析了。
三断笛 2013-02-27
  • 打赏
  • 举报
回复
类和接口都是对对象的抽象描述。 而类已经描述了对象的属性和行为了,而接口一般用于描述行为而已。 类原本完全可以代替接口的工作,而许多语言的作者为了体现接口的精华,硬生生地限制类不能多继承 而接口可以。 我认为, 如果要类,就不需要接口,行为和属性类全包了,像C++ 如果要接口,就干脆不要类,直接接口+结构就行,接口负责对象的行为描述,结构负责对象的属性描述。
失落夏天 2013-02-26
  • 打赏
  • 举报
回复
引用 楼主 mengrufeng007 的回复:
也工作了很长时间了,可是一直搞不太懂接口和抽象类的区别和联系到底是怎么回事,面试的时候感觉好多公司都爱问这个问题,请大牛们给分析一下。
我面试的时候也专门准备了这个问题。 其实也不难, 虽然定义不准确,也可以这么理解 抽象类就等于普通类+接口的功能。 抽象类是可以实现接口的。
evang_shot 2013-02-26
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/330148155
bbney 2013-02-26
  • 打赏
  • 举报
回复
接口要实现,抽象类要继承。 实现类里的方法必须全部在接口中定义,但实现类不一定要实现接口中的所有方法。 抽象类里的所有方法必须在子类中实现,但子类内可增加其他方法,而不需要修改抽象类。
且活且珍惜 2013-02-26
  • 打赏
  • 举报
回复
5L比较认同
bluemoby 2013-02-26
  • 打赏
  • 举报
回复
接口相当于规范,抽象类相当于半成品
Csharp_琪 2013-02-26
  • 打赏
  • 举报
回复
这些个问题虽说是基础,但是也要实际应用下才可以完全理解清楚呢~~
qq827010202 2013-02-26
  • 打赏
  • 举报
回复
根本区别 抽象类可以有实现体。
飘飘哥 2013-02-26
  • 打赏
  • 举报
回复
网上搜吧 简单点 你实现了一个接口 就必须要实现接口里面的所有方法 对于抽象类 你就不必要这样 在我们生活的理解 可能就是你去买包装的产品跟散装的产品的区别
  • 打赏
  • 举报
回复
这内容,网上一搜一大把。
Candylibin 2013-02-26
  • 打赏
  • 举报
回复
接口比抽象类灵活,其实说白了就是java不支持多继承,用接口这种多实现的形式弥补了一下
来逗她 2013-02-26
  • 打赏
  • 举报
回复
一般都是先定义接口,然后用一个抽象类实现接口的部分方法,再从这个抽象类派生出具体的实现类。
wodejuezhe 2013-02-26
  • 打赏
  • 举报
回复
接口是用来实现的,抽象实际中很少用到
nuistchn 2013-02-26
  • 打赏
  • 举报
回复
抽象类与接口的两大区别: (1)在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,提高了代码的可重用性,这是抽象类的优势所在;而接口只能包含抽象方法。 在抽象类中允许加入具体的方法(非抽象方法),因此口占抽象类的功能,即向抽象类中添加一个具体的方法不会对其子类造成影响,但是对于接口,一旦接口被公布,就必须非常稳定,因为随意在接口中添加抽象方法,会影响到实现类,这些实现类要么实现新增的抽想方法,要么声明为抽象类。 (2)一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这是接口的优势所在。
shine333 2013-02-26
  • 打赏
  • 举报
回复
忘了一句。如果把刚才“能飞”这个概念,定义为抽象类Fly(不是苍蝇) 你会发现,要实现我刚才说的那些,让这些东西,都出现在天上,几乎是不可能的。
加载更多回复(1)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧