Interface - Interfaces, like classes, define a set of
properties, methods, and events. But unlike classes, interfaces do not provide
implementation. They are implemented by classes, and defined as separate
entities from classes. An interface represents a contract, in that a class that
implements an interface must implement every aspect of that interface exactly
as it is defined.
Abstract Class - Abstract classes are closely related to interfaces.
They are classes that cannot be instantiated, and are frequently either
partially implemented, or not at all implemented. Abstract classes are useful
when creating components because they allow you specify an invariant level of
functionality in some methods, but leave the implementation of other methods
until a specific implementation of that class is needed. They also version
well, because if additional functionality is needed in derived classes, it can
be added to the base class without breaking code.
The main
difference between them is that a class can implement more than one interface
but can only inherit from one abstract class. Since C# doesn’t support multiple
inheritance, interfaces are used to implement multiple inheritance.
Differences
between Interface and Abstract Class:
Feature
|
Interface
|
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.
|
Access Modfiers
|
An interface cannot have access modifiers for the
subs, functions, properties etc everything is assumed as public
|
An abstract class can contain access modifiers for
the subs, functions, properties
|
Core VS Peripheral
|
Interfaces are used to define the peripheral
abilities of a class. In other words both Human and Vehicle can inherit from
a IMovable interface.
|
An abstract class defines the core identity of a
class and there it is used for objects of the same type.
|
Homogeneity
|
If various implementations only share method
signatures then it is better to use Interfaces.
|
If various implementations are of the same kind and
use common behaviour or status then abstract class is better to use.
|
Speed
|
Requires more time to find the actual method in the
corresponding classes.
|
Fast
|
Adding functionality (Versioning)
|
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.
|
Fields and Constants
|
No fields can be defined in interfaces
|
An abstract class can have fields and constants
defined
|
No comments:
Post a Comment