I already answered similar question. In addition to other Answers, please see the discussion on how to decide on use of interfaces vs. abstract classes:
How to decide to choose Abstract class or an Interface[
^].
Also, one fundamental difference is that interfaces allows for multiple inheritance, in contrast to classes (abstract or not). This is called
week form of multiple inheritance and has serious design implications.
—SA