Friday, August 26, 2011

What are the differences between an interface and abstract class?

Differences between an interface and abstract class:

Interface contains method definition - there is no implementation.  An abstract class some methods can be concrete.  In an interface, no accessibility modifiers are allowed.  An abstract class may have accessibility modifiers. 
Abstract class
Multiple inheritance
A class may inherit several interfaces.
A class may inherit only one abstract class.
Default implementation
An interface cannot provide any code, just the signature.
An abstract class can provide complete, default code and/or just the details that have to be overridden.
Only Static final constants.
Both instance and static constants are possible.
Core VS Peripheral
Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from an IMovable interface.
An abstract class defines the core identity of a class and there it is used for objects of the same type.
If the various implementations only share method signatures then it is better to use Interface.
If the various implementations are of the same kind and use common behavior or status then abstract class is better to use.
Requires more time to find the actual method in the corresponding classes.
Adding functionality
If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method.
If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly.

No comments:

Post a Comment