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