接口和抽象有什么区别?
觉得接口和抽象差不多啊,到底有什么区别?什么时候使用接口,什么时候使用抽象? 问题点数: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




