What to use? So many choices!
Even if you are not using multiple inheritance
Interfaces are preferable to abstract classes which in
turn are preferable to concrete classes when thinking
about a common base class
As we discussed in C++, if you are doing dynamic
binding, it is best if all methods are dynamically
bound – otherwise you will get stuck with having to
know the data type you are dealing with at run time
(RTTI)
An interface ensures that this is the case