Ich denke, ein guter Weg, um eine Schnittstelle zu definieren, ist wie folgt
Eine Schnittstelle ist ein Vertrag, der eine Menge von Methoden, Feldern und Eigenschaften spezifiziert, die auf jedem implementierenden Objekt verfügbar sein werden
Die tatsächliche Implementierung von Sprache zu Sprache kann lustige kleine Unterschiede haben, aber das Prinzip gilt.
Ich habe darüber nachgedacht, Schnittstellen zu der obigen Liste hinzuzufügen, habe sie aber weggelassen, weil sie etwas zu sprachspezifisch zu sein scheint. Ich denke, es ist in Ordnung, obwohl der End-Effekt fast der gleiche ist. Wenn Sie mehr Schnittstellen verwenden, fügen Sie dem Vertrag einfach weitere Methoden, Felder und Eigenschaften hinzu.
Im Allgemeinen ist eine Schnittstelle einfach "wie die Klasse für den Rest der Welt aussieht".
Zum Beispiel diese Klasse in Java:
%Vor%könnte gesagt werden, nur die Bar-Funktion in seiner Schnittstelle zu haben. Intern hat es ein paar andere Mitglieder, aber sie sind privat, also sind sie für die Außenwelt nicht sichtbar.
Häufiger sind Interfaces auch spezifische Typen in der Sprache, zB implementiert MyClass im Folgenden die Schnittstelle IMyClass:
%Vor%Die Schnittstelle wird jetzt in Code ausgedrückt, so dass jedes Mal, wenn eine Variable vom Typ IMyClass erwartet wird, ein Objekt vom Typ MyClass verwendet werden kann, weil es die richtige Schnittstelle implementiert.
Es ist ein äußeres Gesicht zur Welt. In der Regel ist die Menge der öffentlichen Methoden (Mitglieder) ausgesetzt.
Technisch wären sie aber 2 verschiedene Dinge.
Eine Schnittstelle wäre ein öffentlicher Auftrag. z.B.
%Vor%Eine Klasse würde dann diese Schnittstelle "implementieren" - in gewisser Weise, dass sie diese Funktionalität bietet
%Vor%Benutzer dieses Service / Interface müssen sich nicht darum kümmern, wie es implementiert ist oder wer es implementiert? In Abhängigkeit von einer Schnittstelle kann die eigentliche Implementierung beliebig umgeschaltet werden.
Die Schnittstelle zu einer Klasse ist ihr "öffentliches Gesicht", das andere Klassen sehen können. Sie trennt die Implementierung der Klasse von der Art der Interaktion mit anderen Klassen. Auf diese Weise können verschiedene Implementierungen ausgelagert werden und andere Klassen müssen nichts darüber wissen, was sich hinter der Schnittstelle befindet.
Eine Schnittstelle kann sowohl Daten als auch Funktionsmember enthalten.
Interface ist eine Definition von Methoden, die die Klasse beeinflussen kann. Es wird hauptsächlich für Schnittstellenpolymorphie verwendet.
Eine Schnittstelle ist wie eine Klasse, aber nicht ganz. Es hat ähnliche Eigenschaften wie eine Klasse, aber es ist keine Schnittstelle. Eine Schnittstelle hat Variablen und Methoden, "genau wie die Klasse, aber die in der Schnittstelle deklarierten Methoden sind standardmäßig abstrakt (nur Methodensignatur, kein Text)".
Schnittstellen haben zwei Definitionen. Es kommt darauf an, in welchem Kontext der Begriff Interface verwendet wird.
Eine Schnittstelle als Typ. d. h. Verwenden der Schlüsselwortschnittstelle zum Deklarieren einer Schnittstelle.
%Vor%Also jetzt eine Klasse, sagen wir, Auto kann die Schnittstelle Movable implementieren. Dies ist, was als der Vertrag bekannt ist. Wenn die Klasse Car die Schnittstelle Movable implementiert, garantiert Car, dass Implementierungen für alle in Movables deklarierten Methoden bereitgestellt werden Erklärung.
Zusammenfassend wird allgemein eine Schnittstelle als ein Typ (Definition 2) in einem sprachspezifischen Programmierkontext adressiert. Die erste Definition finden Sie in der Regel in einem theoretischen oder gestalterischen Zusammenhang.
Das klassische reale Beispiel einer Schnittstelle ist die Steuerung eines Autos.
Der Bruch, das Gas und das Rad wären die Schnittstelle. Der Motor und andere mechenische Aspekte wären die Implementierung. Diese mechanischen Aspekte können sich ändern, wir würden es nicht wissen, weil unsere Schnittstelle die gleiche bleibt.
Dies ist die Stärke einer Schnittstelle, sie verbirgt Implementierungsdetails, so dass wir auf einer höheren Abstraktionsebene arbeiten können. Wir können die Funktionalität der Schnittstelle normalerweise direkt nutzen, ohne uns darum kümmern zu müssen, wie der darunter liegende Code implementiert wird.
Tags und Links language-agnostic interface duplicates