第18条:接口优于抽象类
Java语言设计提供了两种机制,可以用来定义允许多个实现的类型:接口和抽象类。
因为Java只允许单继承,所以抽象类作为类型定义受到了极大的限制。


现有的类可以很容易被更新,以实现新的接口。
一般来说,无法更新现有的类来扩展新的抽象类。如果你希望两个类来扩展一个抽象类,就必须把抽象类放到类型层次的高处,以便这两个类的一个祖先成为他的子类。这样会间接的伤害到类的层次,迫使这个公共祖先的所有后代类都扩展这个新的抽象类,无论他对于这个后代类是否合适。


接口是定义mixin(混合类型)的理想选择。类除了实现他的“基本类型(primary type)”之外,还可以实现这个mixin类型,以表示提供了某些可供选择的行为。


接口允许我们构造非层次结构的类型框架。


包装类(wrapper class)模式,接口使得安全地增强类的功能成为可能。


通过对你导出的每个重要接口都提供一个抽象的骨架实现(skeletal implementation)类,把这个抽象类的优点结合起来。


必须认真研究接口,并确定哪些方法是最为基本的(primitive),其他的方法则可以根据他们来实现。这些基本的方法将成为骨架实现类中抽象方法。然后,必须为接口中所有其他的方法提供具体的实现。


抽象类的演变比接口的演变要容易的多。


接口一旦被公开发行,并且已被广泛实现,再想改变这个接口几乎是不可能的。
阅读更多
想对作者说点什么? 我来说一句

第08讲 抽象类接口.ppt

2009年10月24日 54KB 下载

第7章 抽象类接口.ppt

2008年11月23日 235KB 下载

第4章 接口抽象类与包.ppt

2011年04月23日 92KB 下载

第06章 抽象类、多态及接口1.pdf

2009年04月04日 350KB 下载

没有更多推荐了,返回首页

不良信息举报

第18条:接口优于抽象类

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭