Was sind Interfaces?



  • Ich hab schon gegoogelt, aber ich seh nicht wo der Unterschied zwischen einem Interface oder einfach einer Klasse, von der man erbt.

    Was sind Interfaces? Wofür braucht man sie? Wofür nicht?

    🙂



  • Ich hab das schönste Interface. 🕶

    Ein interface enthält keine Implementierung. Ein interface gibt nur Methoden vor, die implementiert werden müssen, wie dass dann in einer Klasse gemacht wird ist eigentlich egal. Es sollten halt nur die Ergebnisse geliefert werden, die man aufgrund der Doku vom interface erwartet.



  • ModelOfTheYear2047 schrieb:

    Ich hab das schönste Interface. 🕶

    Ein interface enthält keine Implementierung. Ein interface gibt nur Methoden vor, die implementiert werden müssen, wie dass dann in einer Klasse gemacht wird ist eigentlich egal. Es sollten halt nur die Ergebnisse geliefert werden, die man aufgrund der Doku vom interface erwartet.

    Wieso tuts da keine abstrakte basisklasse?



  • erstmal: interface ist -nachdem, was ich gelernt habe, kein feststehender begriff.

    wir haben den begriff als "nischenbegriff" kennengelernt, der im umfeld der objektorientierten programmierung geprägt wurde.

    interfacebasierte programmierung findet man vor allem in c# und java, wo interfaces typen sind, die keine implementierung vorgeben.

    hier haben wir den unterschied zur abstrakten klasse: die interfacebasierte programmierung bietet polymorphismus (dynamisches binden), ohne dass dies mit dem konzept der vererbung verbunden wäre.

    "damit umgehe man das vererbungskonzept, das nicht unstrittig sei.." wurde bei uns diskutiert.

    erstmal stehen beide konzepte nebeneinander, und finden ihre anwendung.

    ps: noch ein hinweis: durch interfacebasierte programmierung kann starke kopplung (die zwischen objekten ja manchmal natürlich ist und deswegen unvermeidlich ist) umgangen werden



  • interface schrieb:

    Wieso tuts da keine abstrakte basisklasse?

    Abstrakte Basisklasse == Interface.

    Wenn du ein Interface in C++ baust kommt eine abstrakte Basisklasse raus und wenn du eine abstrakte Basisklasse in Java baust, dann kommt ein Interface raus.



  • hehejo schrieb:

    interface schrieb:

    Wieso tuts da keine abstrakte basisklasse?

    Abstrakte Basisklasse == Interface.

    das wäre mir von der idee her zu einfach.

    nicht, dass man in c++ interfaces irgendwie abbilden kann.. aber allgemein würde ich das nicht behaupten.



  • zur konzeptionellen ebene, also der "beziehungsebene" der objekte:

    wenn klassen genutzt werden, -und das gilt auch (eingeschränkt, da sie ja implementenierungen enthalten können) für abstrakte klassen- , ist die beziehung, die zu den instanzen (objekten der klasse) aufgenommen werden können, klar durch die implementierungen; das objekt ist damit für sich (nahezu) vollständig.

    ein interface zu nutzen, verlangt von dem objekt jedoch nur, eine "rolle" spielen zu können, nämlich diese, die durch das im interface verlangte verhalten implementiert werden muss.



  • Abstrakte Basisklasse == Interface.

    Das ist nicht korrekt! Denn eine abstrakte Basisklasse hat mindestens eine abstrakte Methode, kann aber auch Methoden mit Implementierung besitzen!


Anmelden zum Antworten