Rule 6: Prefer Interfaces to Abstract classes
Interfaces can be easily retrofitted anywhere in hierarchy where as if you put abstract class it will not be straight forward always sometime a class might be inheriting from another class in that case extending the abstract class is impossible.