Nach Interface casten
-
Hallo Forum,
ein Beispiel:
Ich habe eine Schnittstelle "IClass", die von der Klasse "Class" implementiert wird.
Nun bin ich auf einige Code-Ausschnitte gestoßen, die z.B. wie folgt ausschauen:-> IClass cl = this.ObjClass (this.ObjClass ist eine Instanz von der Klasse "Class")
oder
-> List<IClass> lst = new List<IClass>;
Jetzt zu meiner Frage:
Warum wird in den gezeigten Beispielen die Schnittstelle an sich benutzt und nicht die Klasse?!
Was für Vor/Nachteile ergeben sich daraus und was ist der Standard?Danke jetzt schonmal für die Antworten!
Grüße
-
Der Vorteil ist, dass alle Klassen, die das Interface implementieren in die Liste "passen".
-
Der Unterschied ist, dass so alle Implementierungen dieses Interfaces verwendet werden können und nicht nur eine konkrete Klasse. Da ja alle Implementierungen eines Interfaces dessen Grundfunktionalität innehaben, kann man so verschiedenartige Objekte als Objekte eines Typen auffassen, da ja alle diese Objekte eine gemeinsame Funktionalität haben.
-
Da ja alle Implementierungen eines Interfaces dessen Grundfunktionalität innehaben
Eigentlich sorgt ein Interface nur dafür, das die Methoden und Signatur aller erbenden Klassen identisch ist. Die Funktionalität kann völlig unterschiedlich sein.
-
Knuddlbaer schrieb:
Eigentlich sorgt ein Interface nur dafür, das die Methoden und Signatur aller erbenden Klassen identisch ist. Die Funktionalität kann völlig unterschiedlich sein.
Ja, da hast Du recht, ich hab mich etwas missverständlich ausgedrückt.
-
Knuddlbaer schrieb:
Da ja alle Implementierungen eines Interfaces dessen Grundfunktionalität innehaben
Eigentlich sorgt ein Interface nur dafür, das die Methoden und Signatur aller erbenden Klassen identisch ist. Die Funktionalität kann völlig unterschiedlich sein.
Die Funktionalität ist im "Contract" vorgegeben, den aber keine mir bekannte Sprache prüfen kann. Wenn ein Interface mit dokumentiertem "Contract" vollständig implementiert ist, also auch die Teile die nicht automatisch von irgendeinem Tool geprüft werden können, dann ist auch die "Grundfunktionalität" erfüllt