Making choice between Interface and Abstract Class

The choice of whether to design your functionality as an interface or an abstract class can sometimes be a difficult one. Here are some recommendations to help you to decide whether to use an interface or an abstract class to provide polymorphism for your components.
  • The abstract class allows concrete methods (methods that have implementation) but interface doesn't.
  • If you want to provide common, implemented functionality among all implementations of your component, use an abstract class. Abstract classes allow you to partially implement your class, whereas interfaces contain no implementation for any members.
  • If the functionality you are creating will be useful across a wide range of disparate objects, use an interface. Abstract classes should be used primarily for objects that are closely related, whereas interfaces are best suited for providing common functionality to unrelated classes.
  • If you anticipate creating multiple versions of your component, create an abstract class. Abstract classes provide a simple and easy way to version your components. By updating the base class, all inheriting classes are automatically updated with the change. Interfaces, on the other hand, cannot be changed once created. If a new version of an interface is required, you must create a whole new interface.
  • If you are designing small, concise bits of functionality, use interfaces. If you are designing large functional units, use an abstract class.

0 comments :

Post a Comment

> Related Posts with Thumbnails
 

Copyright © 2012. GS dot net - All Rights Reserved - Design by BTDesigner - Proudly powered by Blogger