zhrb的空间

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  20 随笔 :: 0 文章 :: 29 评论 :: 0 Trackbacks

        接口主要是用来描述这个系统有些什么功能,应该怎么调用这些功能,是更高的一
层抽象。主要是用来表现给外界看。同时接口比较稳定,不能随便变来变去。因为你一
变,对于外界来说你的表现就变了。接口对于系统来说,相当于一个规范的描述,感觉
有点像虚拟机规范之于虚拟机。接口对于编程人员来说,相当于帮你隐藏了一些东西,
这写隐藏(如何实现)的东西,你不需要去关注。

    抽象类,在语法上的区别,你也说了。实际上抽象类也可以部分的实现接口的功能
,即描述一些东西给外界看。抽象类更像一个系统的骨架,里面有一些基本的需要共享
的代码。和一些已经实现好的方法。想想,如果全都用接口代替抽象类的话,那么我们
底下子类的编写就需要编写大量的代码。而这些子类,本可以实现代码和属性的共享的
。所以抽象类,更多的是一个对内的东西。

    可以说接口是比抽象类更抽象的一个东西。接口和抽象类关注的地方不一样。当然
从逻辑上来看,他们的区别不是那么的明显。但是从用法上来看,他们还是有比较大的
区别。

    写的有点乱...

posted on 2008-02-28 15:43 zhrb 阅读(1444) 评论(3)  编辑  收藏

评论

# re: 接口与抽象类的区别.... 2008-07-18 09:03 蒙娜丽莎
抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。
动物类要有呼吸方法。怎么呼吸就是子类的事了。
现在有很多讨论和建议提倡用interface代替abstract类,两者从理论上可以做一般性的混用,但是在实际应用中,他们还是有一定区别的。抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法,就像JAVA王子所说的事件中的适配器就是一个很好的应用。
用一个简单的例子,比如说一个教师,我们把它作为一个抽象类,有自己的属性,比如说年龄,教育程度,教师编号等等,而教师也是分很多种类的,我们就可以继承教师类而扩展特有的种类属性,而普遍属性已经直接继承了下来。
而接口呢~还是拿教师做例子,教师的行为很多,除了和普通人相同的以外,还有职业相关的行为,比如改考卷,讲课等等,我们把这些行为定义成无body的方法,作为一个集合,它是一个interface。而教师张三李四的各自行为特点又有不同,那么他们就可以扩展自己的行为body。从这点意义上来说,interface偏重于行为。
总之,在许多情况下,接口确实可以代替抽象类,如果你不需要刻意表达属性上的继承的话。  回复  更多评论
  

# re: 接口与抽象类的区别....[未登录] 2008-07-18 10:45 zhrb
@蒙娜丽莎
说的不错,主要还是要到实践中应用才能具体的指导怎么应用这两者。多看多用  回复  更多评论
  

# re: 接口与抽象类的区别.... 2009-05-31 09:04 12
@蒙娜丽莎
接口和抽象类差不多  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: