`
schumee
  • 浏览: 24608 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Effective Java 学习笔记第15条 --- 接口优于抽象类

阅读更多

接口和抽象类的区别:

  1. 抽象类允许包含默写方法的实现,而接口是不允许的;
  2. 一个类要实现抽象类,它必须成为抽象类的一个子类,而实现接口的类只要定义了所要求的方法,并遵守通用的约定,不管这个类位于类层次的哪个地方;

接口可以构造出非层次结果的类型框架,比如一个接口可以继承多个其他的接口。还可以安全地增加一个类的功能。

 

当然,也可以把接口和抽象类的有点结合起来,对于你期望导出的每一个总要的接口,头提供一个抽象的骨架实现类,这样,接口的作用仍然是定义类型,骨架实现类负责所以与接口实现相关的工作。

 

抽象类也有明显的优势,它可以在一个类的后续的版本中方便的增加一个新的方法,但不影响到其他相关的类,而接口则做不到这一点。

 

总之,接口通常是定义具有多个实现类型的最佳途径(例外的情况:当演化的容易性比灵活性和功能更为重要的时候,应该使用抽象类来定义类型,但也必须 理解抽象类的局限性,并确保可以接受这些局限性),如果已经导出了一个重要的接口,那么,也应该考虑同时提供一个骨架实现类。最后,应该尽可能的谨慎设计 所有的公有接口,并通过编写多个实现来对它们进行全面的测试。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ilibaba/archive/2009/02/03/3860582.aspx

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics