当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·找呀找,找呀找    »显示摘要«
    摘要: win32 sdk帮助在哪可以找到?是中文的帮助吗? 没办法,我英文很臭。 ......
 ·关于性能计数器的问题。    »显示摘要«
    摘要: 我现在进行准备进行一个web压力测试,要使用到2000自带的性能计数器,请问添加哪些计数器对这个测试的数据分析有利。谢谢! ......


用接口还是用抽象类

请大家讨论一下接口和抽象类的使用,  
  即在什么情况下用接口比较好,  
  什么时候用抽象类比较好,  
  为什么,给出理由,谢谢!  
   
  如果可以文字代码结合最好,多多加分。  
   
  ^_^

NO.1   作者: peacock_king

抽象类指有一些方法还没实现在,只需在类里声明。  
   
  接口是抽象类的极端表现形式,当没有任何部分功能已实现的时候,就用接口。  
   
  用abstract来声明类时,即使这个类中一个abstract函数也没有,你也可以这样作,目的是:不想这个类能被创建出实例。  
   
   
   
 

NO.2   作者: davidTIm

你可以去看一本书JAVA   设计模式,里面讲得很清楚。接口和抽象类区别

NO.3   作者: liuflei3139

1、如果你的实现中包含了大量一抹一样的代码,那么建议用抽象类,可以在其中定义一些比不变的方法。同样,如果你的实现中只是有一些对外的公共接口,而具体实现变化颇大,则应该使用接口。  
   
  2、接口是抽象类的进一步抽象化。  
   
  3、Java中只能单继承,不过如果你使用接口技术的话,可以实现多重继承。  
   
  4、用抽象类可以实现模板方法的设计模式。

NO.4   作者: shanjin2003

java设计思想:接口与抽象类优先考虑接口!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

NO.5   作者: yjawal8071

java与模式这本书中有说明

NO.6   作者: ByWangler

抽象类的继承性是接口所不能比拟的:  
   
  BaseClass--->subBaseClass---->subSubClass  
   
  subBaseClass   由抽象类BaseClass继承而来,可以重写所有的方法,  
   
  subSubClass     由subBaseClass继承而来,可以直接继承subBaseClass已重写的方法.  
   
  接口的实现则必须逐个实现  
   
  我的想法不知道对否??

NO.7   作者: superLee

abstract   class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract   class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract   class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。  
   
  abstarct   class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is   a"关系,即父类和派生类在概念本质上应该是相同的中有关于"is   a"关系的大篇幅深入的论述,有兴趣的读者可以参考)。对于interface   来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的,仅仅是实现了interface定义的契约而已。  
   
 

NO.8   作者: superLee

从编程层面看abstract   class和interface  
  从编程的角度来看,abstract   class和interface都可以用来实现"design   by   contract"的思想。但是在具体的使用上面还是有一些区别的。  
  首先,abstract   class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。也许,这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。  
  其次,在abstract   class的定义中,我们可以赋予方法的默认行为。但是在interface的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会增加一些复杂性,有时会造成很大的麻烦。  
  在抽象类interface中不能定义默认行为还存在另一个比较严重的问题,那就是可能会造成维护上的麻烦。因为如果后来想修改类的界面以适应新的情况时,就会非常的麻烦,可能要花费很多的时间。但是如果界面是通过abstract   class来实现的,那么可能就只需要修改定义在abstract   class中的默认行为就可以了。  
  同样,如果不能在抽象类中定义默认行为,就会导致同样的方法实现出现在该抽象类的每一个派生类中,违反了"one   rule,one   place"原则,造成代码重复,同样不利于以后的维护。因此,在abstract   class和interface间进行选择时要非常的小心。  
 

NO.9   作者: GFox

其实很简单,优先选用接口,因为它最单纯。如果大家有公用的代码的话,就用抽象类。  
 


 ·fason……    »显示摘要«
    摘要: 一段这样的程序是想实现下拉菜单的联动,但是不成功,不知道为什么? <html> <head> <meta http-equiv="content-type" content="text/html; charset=gb2312"> <script language="javascript"......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE