C# Tutorials and offshore development in India
    Tutorials   Resources   Forum   Communities   Interview   Jobs   Projects   Offshore Development    
Silverlight Tutorials | Mentor | Code Converter | Articles | Code Factory | Computer Jokes | Members | Peer Appraisal | IT Companies | Bookmarks | Revenue Sharing |


Prizes & Awards
My Profile



Active Members
TodayLast 7 Days more...

New Feature: Community Sites: Create your own .NET community website and start earning from Google AdSense ! It's Free !




In which scenario we will use interface and an abstract class.


Posted Date: 03 Aug 2006    Resource Type: Articles    Category: .NET Framework
Author: tapan dalaiMember Level: Silver    
Rating: Points: 4



Introduction



In which scenario we will use interface and an abstract class.
Here are some recommendations to help you to decide whether to use an interface or an abstract class to provide polymorphism for your components.
? 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 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 are designing small, concise bits of functionality, use interfaces. If you are designing large functional units, use an abstract class.
? 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






Responses

Author: Himanshu Singh    28 Nov 2008Member Level: Bronze   Points : 2
Difference between Abstract classes and Interface

Little background: A real world entity is represented in an OOP world as an object. Objects are defined as classes in any language.
A class defines objects in two aspects
Object's characteristics - Data Members
Object's functionality - Member functions

So, when the classes that are forced to provide implementations of the functions prototypes that are defined in either ‘interfaces’ or a ‘abstract class’ are not belonging to the same family (having some inherited parental characteristics from same parent directly or indirectly) but are rather related through some functionalities then 100% we will go with interface and if above said classes are belonging to same family then we should go with abstract class inheritance.
Also in case of inheritance as everything is a specialization of base parent object so there is allowance of providing some default definitions of the functions that are needed to be implemented further by specialized classes. This is not any way allowed in interfaces because implementing classes are not belonging to same family and are not any way related by characteristics.

An Example:
We have four real world objects:
• Airplane
• Bird
• Sparrow
• Eagle

We have one method that is a functionality of all above objects
• Fly

Now all objects share common functionality flying in air but differ in the mechanism they use to fly.

Also by close look we see that in general there is some common characteristics (as well as some common functionalities) between Sparrow and Eagle that can be a part of common class Bird (that has to be abstract because there is no real thing like bird!). But any way Airplane can't be related to Bird or its specialized classes Sparrow and Eagle.

So if want to expose fly functionality to outer world and want their implementations in Airplane and Sparrow (or any bird), so I will 100% go for Interface and Abstract classes will be a big NO! This will also give you clue why interfaces are only allowed for multiple inheritance not classes (including abstract class).

But if we exclude Airplane and want that fly functionality is exposed to outer world and its implementing classes are Bird, Sparrow and Eagle then 'Abstract Classes' is the best of best choice.

Happy programming! Please feel free in writing to me for further clarifications on other OOP concepts (im.himanshu2006@gmail.com)

Himanshu


Author: P.V.Lakshminarayana    09 Dec 2008Member Level: Silver   Points : 0
NiCE Example Himanshu!


Feedbacks      
Popular Tags   What are tags ?   Search Tags  
Interface  .  Abstract class.  .  

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Describe the Managed Execution Process?
Previous Resource: Child DataGrid
Return to Discussion Resource Index
Post New Resource
Category: .NET Framework


Post resources and earn money!
 
Related Resources



dotNet Slackers   BizTalk Adaptors    Web Design


Contact Us    Privacy Policy    Terms Of Use