btw: Interfaces sind Schnittstellen, welche immer mit einem
Dort werden die Signaturen von Methoden etc. eingefügt, aber auch nur das, sonst nix.
Wenn eine Klasse jetzt ein Interface implementiert, dann muss diese die Methoden implementieren, die durch die Schnittstelle vorgegeben sind, also da drin stehen.
Ein Interfaces schließt also sozusagen einen Vertrag ab.
Das hat den Hintergund, dass man somit eine sehr gute Kontrolle hat, der User das jedoch eigens implementieren kann. Aber man schreibt vor, dass er das machen muss.
Auch kann man mit Interfaces als Rückgabetyp bei Funktionen sagen, dass der User mehrere Möglichkeiten hat.
Beispielsweise das Interface
Diese Auflistungen implementieren diese Schnittstelle deshalb.
Das sind alles Auflistungen, in die man einzelne Items der angegebenen Sorte (z. B. String bei List(Of String)) reinpacken kann.
Die Auflistungen unterscheiden sich in den Verhaltensweisen, je nachdem, was man braucht, ist jetzt auch egal.
Wenn man jetzt eine Funktion schreibt, die was für Auflistungen machen soll, dann soll der User sich ja im Rahmen aller Auflistungen bewegen können.
Da jetzt alle diese Auflistungen diese Schnittstelle implementieren, kann man sagen: Hey, dann sind diese Auflistungen in ihrer Art so ziemlich gleich und um alle unterstützen zu können, setze ich als Rückgabetyp: "IEnumerable(Of T)".
Beispiel:
In dieser Funktion wird jetzt irgendwas gemacht und dann ein
So, jetzt kann der Nutzer diese Funktion aufrufen, egal welche Auflistung er verwendet, solange diese 'IEnumerable(Of T)' verwendet/implementiert.
Der Sinn ist also sich im Rahmen dieser Auflistungen zu bewegen und der User kann das dann spezifizieren.
Und so kann man das auch mit allem machen, wo man das braucht.
Also nur Klassen unterstützen, die dann das gewählte Interface implementieren.
I
am Anfang des Namens gekennzeichnet sind. Dort werden die Signaturen von Methoden etc. eingefügt, aber auch nur das, sonst nix.
Wenn eine Klasse jetzt ein Interface implementiert, dann muss diese die Methoden implementieren, die durch die Schnittstelle vorgegeben sind, also da drin stehen.
Ein Interfaces schließt also sozusagen einen Vertrag ab.
Das hat den Hintergund, dass man somit eine sehr gute Kontrolle hat, der User das jedoch eigens implementieren kann. Aber man schreibt vor, dass er das machen muss.
Auch kann man mit Interfaces als Rückgabetyp bei Funktionen sagen, dass der User mehrere Möglichkeiten hat.
Beispielsweise das Interface
IEnumerable(Of T)
stellt Zeugs bereit für Auflistungen, wie List(Of T)
, Stack(Of T)
etc. Diese Auflistungen implementieren diese Schnittstelle deshalb.
Das sind alles Auflistungen, in die man einzelne Items der angegebenen Sorte (z. B. String bei List(Of String)) reinpacken kann.
Die Auflistungen unterscheiden sich in den Verhaltensweisen, je nachdem, was man braucht, ist jetzt auch egal.
Wenn man jetzt eine Funktion schreibt, die was für Auflistungen machen soll, dann soll der User sich ja im Rahmen aller Auflistungen bewegen können.
Da jetzt alle diese Auflistungen diese Schnittstelle implementieren, kann man sagen: Hey, dann sind diese Auflistungen in ihrer Art so ziemlich gleich und um alle unterstützen zu können, setze ich als Rückgabetyp: "IEnumerable(Of T)".
Beispiel:
In dieser Funktion wird jetzt irgendwas gemacht und dann ein
IEnumerable(Of T)
zurückgegeben. So, jetzt kann der Nutzer diese Funktion aufrufen, egal welche Auflistung er verwendet, solange diese 'IEnumerable(Of T)' verwendet/implementiert.
Der Sinn ist also sich im Rahmen dieser Auflistungen zu bewegen und der User kann das dann spezifizieren.
Und so kann man das auch mit allem machen, wo man das braucht.
Also nur Klassen unterstützen, die dann das gewählte Interface implementieren.
#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()