Chinaunix首页 | 论坛 | 博客
  • 博客访问: 501673
  • 博文数量: 78
  • 博客积分: 1271
  • 博客等级: 中尉
  • 技术积分: 1108
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-14 14:39
文章分类

全部博文(78)

文章存档

2015年(2)

2014年(6)

2013年(15)

2012年(18)

2011年(37)

分类: Java

2011-10-30 11:06:33

    JAVA语言中拥有接口,而比它更早的C++这种面向对象语言却没有接口,我们想一想接口为我们带来了什么。接口也好,抽象类也罢都是用于定义类型等级结构的。
   接口仅系提供了描述方法的特征,没给出具体的方法实现,应该说JAVA去除了C++的多重继承,仅保留单一继承,实践应该证明多重继承在应用中带来了比较多的问题,所以JAVA才会将其去除,但实际应用中又不可能是单一继承这样一条线下去,否则整个类型等级结构一条线下,层级变得很深。
    其实在很早年就提倡面向接口编程,而不是面向具体类编程。这样的好处是对象与对象间的协作提供了足够了动态性,亦即可插入性。
   JAVA中提供可插入性,无非两种手段:接口,抽象类。我个人的看法是接口提供了可插入功能点的规范。抽象类是涉及类的继承,运用的时候一定要看看是否乎合继承复用的原则,从设计上来讲又有另外一个说话,“组合优于继承”,前辈告诉我们不要滥用继承。是否使用继承复用将会后继讨论。

    提到类型等级结构,不得不提JAVA中的两个术语:重载(overload),覆盖(override)。overload是在一个类内进行的,它的判断准则为:方法名,参数的数目及参数的类型。override是在超类和子类型间进行的,它的判断准则为:方法名,参数的数目,参数的类型,返回类型及抛出的异常。


阅读(1103) | 评论(0) | 转发(0) |
0

上一篇:开-闭原则

下一篇:JAVA抽象类与接口

给主人留下些什么吧!~~