I recently attended an interview and they asked me the question \"Why Interfaces are preferred over Abstract classes?\"
I tried giving a few answers like:
When you use abstract classes you create a coupling between the subclass and the base class. This coupling can sometimes make code really hard to change, especially as the number of subclasses increases. Interfaces do not have this problem.
You also only have one inheritance, so you should make sure you use it for the proper reasons.