| Multiple inheritance | A class may inherit several
interface . | 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 interface | 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 constrants defined. |
0 comments:
Post a Comment