What is the difference between an interface and an abstract class ?
When will an abstract class become equivalent to an interface ?
To equivalent to an interface , the abstract class must meet following conditions :
• All of its members must be abstract.
• It should not have members other than methods,properties,events and indexers.
• Access modifiers to all of its members must be public.
Interface | Abstract Class |
Interfaces are implemented i.e. instances of interfaces cannot be created by derived classes. | Classes are inherited i.e. derived classes do create instances of abstract classes |
You cannot use access specifiers with members of an interface. All interface members are implicitly public and cannot have any other access specifier. | Members of abstract class can have all access specifiers except private i.e. they can be internal, public, protected and protected internal but not private. |
All the members of an interface are implicitly abstract (although you cannot explicitly use abstract keyword because it not allowed to use access specifiers in interface). | An abstract class can have non-abstract members. |
Interface cannot have static members. | Abstract classes can have non-abstract static members. |
A class can inherit one or more interfaces. | A class can inherit from only one abstract (or non-abstract ) class. |
Modifying an interface results in breaking the existing clients. This is because clients must implement all interface members, and interface members are only declarations , no code or values are allowed. | Not all modifications in an abstract class break existing clients. E.g. adding a new non-abstract method to the base abstract class will not break existing clients. |
Interfaces CANNOT have constructors and destructors. | Constructors and destructors ARE ALLOWED in abstract classes. The abstract class constructors cannot be abstract or private. |
When will an abstract class become equivalent to an interface ?
To equivalent to an interface , the abstract class must meet following conditions :
• All of its members must be abstract.
• It should not have members other than methods,properties,events and indexers.
• Access modifiers to all of its members must be public.
No comments:
Post a Comment