Die Idee dahinter ist, das viele unterschiedliche Klassen das gleiche Interface implementieren können.
Das schafft man auch mit einer abstrakten Basisklasse.
nur wenn alle Klassen von der abstrakten Basisklasse abgeleitet werden können. Wenn nicht, dann wirfst Du entweder
OOP-Prinzipien über Bord oder machst Dein Klassenmodell künstlich komplexer als es sein muss. Und das sehe ich als großen Vorteil von Interfaces an: Ich kann gleiches Verhalten in unterschiedliche KLassen bzw. Klassenmodelle "injizieren", ohne dass diese voneinander wissen müssen. Und damit kannst Du dann Code wirklich wieder verwenden...