CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

接口和抽象有什么区别?

楼主aboutwinter(大约在冬季)2004-09-03 15:49:21 在 Java / J2SE / 基础类 提问

觉得接口和抽象差不多啊,到底有什么区别?什么时候使用接口,什么时候使用抽象? 问题点数:0、回复次数:16Top

1 楼bluesky35(蓝天)回复于 2004-09-03 15:54:50 得分 0

接口中所以的方法只能是未实现的,而抽象中可以有已经实现的方法,主要区别是接口可以进行多重继承,而抽象不行.  
  如果所有的方法都需要子类实现,建议使用接口,如果有些方法是父子共用的,而且不需要多重继承,那么推荐使用抽象.Top

2 楼bobshi(JAVA&C++)回复于 2004-09-03 15:55:14 得分 0

楼主看看,这个贴子。  
   
  http://community.csdn.net/Expert/topic/3241/3241817.xml?temp=.7995264Top

3 楼ErvinLee(哈林)回复于 2004-09-03 15:56:27 得分 0

接口不是类,而抽象类是Top

4 楼cuizm(射天狼 http://www.j2soft.cn/)回复于 2004-09-03 16:01:18 得分 0

二楼的例子给的很好!!Top

5 楼yangFrame(一草)回复于 2004-09-03 16:14:03 得分 0

一个类,不能从两个抽象类继承。  
  却能实现多个接口。Top

6 楼learnner( )回复于 2004-09-03 16:33:04 得分 0

接口不能实现任何方法,抽象类可以Top

7 楼nwpulipeng(☆→【★海阔天空★】)回复于 2004-09-03 16:35:46 得分 0

faq里有精华帖,楼主搜索一下看看Top

8 楼mmhhllRen(mhl)回复于 2004-09-03 17:21:15 得分 0

看书好了  
  Top

9 楼gameboy999(-'_'-)回复于 2004-09-03 18:25:30 得分 0

has   a  
  is     a  
   
  主要就看上面这两种了.  
   
   
  interface还有其他妙用,例如Serializable接口,仅仅是告诉使用者这个是一个可序列化的对象(instanceof   Serializable),因为interface   Serializable里面根本什么都没有!  
   
  还有就是jdk   library里面,  
  在collections或者listener的实现里面  
  一般都是规定一个interface  
  然后再帮你实现一个利用此interface的abstract类(实现大部分固定的代码)  
   
  Top

10 楼zhlmmc(zhlmmc)回复于 2004-09-03 18:45:21 得分 0

接口可以多继承,抽象类就不可以。  
  接口更简洁,一般做一个标识用,说明继承它的类有特定的方法,也用来做多态。而抽象类可以抽象更多的内容,可以为继承它的子类提供一些公共的方法,属性等等。  
  具体的区别在遇到具体的情况的时候就会体现出来,到时候就会有选择。Top

11 楼woai_259()回复于 2004-09-03 18:55:53 得分 0

接口不可以有返值,并且它不是类,而抽象可以做为一个类!Top

12 楼XIHSHI(西红柿)回复于 2004-09-03 19:12:48 得分 0

抽象类,实现面向对象设计的一个最核心的原则OCP;  
  接口可以实现多重继承Top

13 楼yaoyanqing()回复于 2004-09-03 19:28:03 得分 0

interface可以实现多重继承如class   abc   implements   a,b   {   ....}  
  并且所有定义的方法都不能有实现的内容  
  abstract类可以定义非抽象方法  
  另外实现接口的实例,必须实现所有的方法Top

14 楼shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写))回复于 2004-09-03 19:56:39 得分 0

理解他们的用途很重要,接口一般是定义用户可以进行的操作,或是程序员必须实现的操作,这些概念我认为使用"契约"比较好理解,即你要成为什么什么东西,那么你必须实现这些方法,实现了这些方法以后,我才认为你是什么什么东西,这就是一种契约.但是抽象类不一样,他的用途以及概念最主要是在"现在我真的不知道这个东西应该怎么作了(指某个操作),但是我还是知道一点应该怎么做的(已经实现的方法),我还是留给后人来完成吧",即他的主要目的不是为了完成某种契约,而是不知道现在他能怎么办,所以就只好推给后面的了.  
  使用CORBA可以理解,CORBA定义的就是一个接口:"要完成这些通信,那么你们必须完成这些操作",而Servlet里面的servlet就是典型的抽象类概念(虽然他不是),"虽然我知道HTTP客户传来来的是get操作,那么我就执行doGet方法,但是我现在真的不知道你要doGet方法要作么东西呀,所以还是后人来继续完成我的工作吧",当然抽象也有一种契约,就是"^_^,你要成为我的后人,行,帮我完成我没有完成的工作吧!什么,你也不能,那好,我不管,你可以交给你的后人完成,但是我只认你",这就是抽象中的契约!Top

15 楼dddddy(随遇而安)回复于 2004-09-03 19:57:47 得分 0

书上说如果即用接口又能用抽象类,那就用接口。尽量使用接口。Top

16 楼alpha15(奥法)回复于 2004-09-03 20:37:40 得分 0

呵呵  
  看来用不着再发表什么言论了Top

相关问题

  • 接口与抽象类的区别???
  • 抽象类和接口区别总结
  • 重写一个抽象类的抽象方法 和 实现一个接口有什么区别?
  • 请问,接口与抽象类之间有何区别
  • 请问抽象类和接口的区别
  • 讨论一下抽象类与接口的区别?
  • 接口和类有什么区别?
  • c#中虚函数,抽象类和接口有什么区别? 这三者一般在什么情况下使用?
  • 在java中接口与抽象类在使用中有多大的区别
  • com接口和api接口有什么区别?

关键词

  • 接口
  • 抽象
  • 实现
  • 方法
  • 类
  • 契约
  • 区别
  • 多重继承
  • 后人
  • 继承

得分解答快速导航

  • 帖主:aboutwinter

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo