yourmaninamsterdam hat geschrieben:Ein Interface ist im Prinzip nichts anderes als eine 100%ig abstrakte Klasse.
Jein; auch in einer "100% abstrakten Klasse" könnte man noch gemeinsame Attribute definieren. Und auch bei einer "100% abstrakten" Klasse kann ich nur von dieser - und nicht noch gleichzeitig einer weiteren - Klasse erben. Daher sollte man bei der Aussage oben betonen, "in so Fällen will man aber
keine abstrakte Klasse, sondern ein Interface nutzen"
yourmaninamsterdam hat geschrieben:In der Regel ist es so, dass abstrakte Klassen eine Gruppe von konkreten Implementierungen zusammenfassen. Sie tragen dann oft Namen abstrakter Objekte, zum Beispiel "Shape", "Game". Allgemeinsprachlich sagst du dann "Ich hab hier eine (nicht näher definierte) geometrische Figur." oder "Ich hab mir letztens ein Spiel gekauft."
Interfaces definieren eher ein gemeinsames Verhalten. Daher kommen auch Namen wie "Remote", "Serializable", "Comparable" zu Stande. Allgemeinsprachlich hast du also "Dinge, die man vergleichen kann." oder "etwas, das man über Netwerk nutzen kann."
Dem kann ich wieder gut zustimmen

, gerade die Form mit "-able" sind sinnvoll: "alle, die mich implementieren, sind in der Lage X zu tun" ist genau eine sinnvolle Leseweise für Interfaces. Und das übersetzt sich ins Englische eben als "X-able"

, also "Paintable, Drawable, Printable, ..."
Guido