`

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.  
分享到:
评论

相关推荐

    java英文笔试

    What is the difference between an abstract class and an interface? **Answer**: In Java, an abstract class can have both abstract and non-abstract (concrete) methods, whereas an interface can only ...

    外文翻译 stus MVC

    However, there is a monumental difference between a grade school page and a professionally developed Web site. The page designer (or HTML developer) must understand colors, the customer, product flow...

    Java邮件开发Fundamentals of the JavaMail API

    Instead, it defines the content of what is transferred: the format of the messages, attachments, and so on. There are many different documents that take effect here: RFC 822 , RFC 2045 , RFC 2046 , ...

    CSharp 3.0 With the .NET Framework 3.5 Unleashed(english)

    - **A Quick Introduction to Reference Types and Value Types**: This section explains the fundamental difference between reference types (like objects and arrays) and value types (like integers and ...

    coreJava240问与答面试题

    6) Difference between abstract class and interface ? ............................................................ 10 7) Why java is platform independent? .................................................

Global site tag (gtag.js) - Google Analytics