`

What is the difference between interface and abstract class

    博客分类:
  • Java
阅读更多
在国外的一个论坛上看到一个关于抽象类和接口比较的帖子,其中有一篇感觉很有道理:

Interface   versus   Class   Inheritance   is   pretty   easy   once   you   understand   it.  

There   is   a   very   easy   way   to   distinguish   the   2.  

Class   inheritance   =   implemenation   inheritance.  
What   this   means   is   that   if   you   have   a   base   object   you   inherit   from,   your   new   derived   object   will   either   contain   or   override   the   existing   functionality   of   the   base   object.   This   is   often   referred   to   as   "is   a "   relationship.  

A   Beagle   IS   A   Dog.  


Interface   inheritance   is   a   little   different.   It   is   basically   like   a   contract   and   is   usually   referred   to   as   a   "has   a "   relationship.   By   agreeing   to   implement   an   interface,   you   agree   to   implement   all   of   its   members,   and   provide   your   own   implementation.   An   Interface   should   describe   what   a   class   does,   rather   than   what   a   class   is.  

A   Beagle   Has   A   Bark  

One   reason   to   use   Interfaces   over   Implementations   is   versioning   or   upgradability.  
Any   changes   you   make   to   your   base   class   (abstract   class)   could   possibly   break   subclasses   that   are   derived   from   that   class.   By   implementing   interfaces   you   alleviate   this   problem   by   allowing   clients   or   code   to   have   multiple   interfaces.   By   using   interfaces,   subclass   can   only   see   its   parents   interface,   not   the   implementation.  
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics