Hallo Garzec,
das Schlüsselwort
abstract sagt, das ein Objekt unvollständig ist. Das Schlüsselwort ist nicht nur gültig bei Methoden, sondern auch für Klassen und Eigenschaften.
abstract (C#-Referenz)
Das Schlüsselwort
interface ist ausschließlich als "Ersatz" für das Schlüsselwort
class zulässig und besagt lediglich das jene Klasse die diese Schnittstelle realisiert die Signatur der Schnittstelle besitzen muss.
interface (C# Referenz)
Mit den beiden Konstrukten drückst du etwas unterschiedliches aus. Deine Klasse IST Teil der abstrakten Klasse und vervollständigt diese, oder deine Klasse HAT einen Teil, welcher die Signatur einer Schnittstelle realisiert.
Konkret ist es meist so, dass eine abstrakte Basisklasse Verhalten besitzt welche in allen ableitenden Klassen benötigt wird, aber ein Teil muss von der ableitenden Klasse umgesetzt werden. Bei Schnittstellen gibt es kein gemeinsames Basisverhalten, sondern lediglich eine Signatur die jede realisierende Klasse implementieren muss. An dieser Stelle möchte ich darauf hinweisen, dass es in vielen Fällen sinnvoller ist, Verhalten als eigene Klasse zu kapseln und sie nicht in eine Basisklasse zu schreiben. Als Referenz solltest du dir unbedingt
das Strategy Pattern ansehen.
"Identifiziere jene Aspekte, die sich ändern und trenne sie von jenen, die konstant bleiben."