| Feature | Interface | Abstract Class |
|---|---|---|
| Multiple inheritance | A class may inherit severalinterfaces | 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. |
| Constants | Only Static final constants | Both instance and static constants are possible |
| Speed | Requires more time to find the actual method in the corresponding classes. | Fast |
| 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. |
| Homogeneity | If the various implementations only share method signatures then it is better to use Interface | If the various implementations abstract class then we have the common behavior or status then abstract class is better to use. |
No comments:
Post a Comment