Abstrakte Klassen und Interfaces sind per Definition schon zu unterscheiden. Kommt halt immer darauf an, was ich haben will. Möchte ich für meine Software Zusicherungen haben, dass gewissen Methoden existieren, die eben auf unterschiedliche Art und weise implementiert werden können, benutzt man eben ein Interface. Da es (Gott sei Dank) keine Mehrfachverererbung gibt, hast du mit abstrakten Klassen irgendwann Probleme, nämlich dann, wenn du mehrere Zusicherungen (Schnittstellen) benötigst. Hier implementiert man dann eben zwei Interfaces. Zwei Klassen erweitern ginge dann schon nicht mehr.
Abstrakte Klassen verwende ich äußerst selten und nur dann, wenn sie an sich schon fast alleine "lebensfähig", d.h. verwendbar wären und nur minimalen Ergänzungen notwendig sind, damit man Objekte davon einsetzen kann (z.B. einen abstrakten Basis-Controller).
__________________ Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin) Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe) |