Exemplarische Vorgehensweise: Erstellen und Implementieren von Schnittstellen (Visual Basic)
Schnittstellen beschreiben die Merkmale von Eigenschaften, Methoden und Ereignissen, überlassen die Implementierungsdetails jedoch den Strukturen oder Klassen.
In dieser exemplarischen Vorgehensweise wird das Deklarieren und Implementieren einer Schnittstelle veranschaulicht.
Hinweis
Diese exemplarische Vorgehensweise enthält keine Informationen zum Erstellen einer Benutzeroberfläche.
Hinweis
Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.
So definieren Sie eine Schnittstelle
Öffnen Sie ein neues Visual Basic-Windows-Anwendungsprojekt.
Fügen Sie dem Projekt ein neues Modul hinzu, indem Sie im Menü Projekt auf Modul hinzufügen klicken.
Geben Sie dem neuen Modul den Namen
Module1.vb
, und klicken Sie auf Hinzufügen. Der Code für das neue Modul wird angezeigt.Definieren Sie eine Schnittstelle namens
TestInterface
innerhalb vonModule1
, indem Sie zwischen den AnweisungenModule
undEnd Module
Interface TestInterface
eingeben und dann die EINGABETASTE drücken. Der Code-Editor zieht das SchlüsselwortInterface
ein und fügt eineEnd Interface
-Anweisung hinzu, um einen Codeblock zu bilden.Definieren Sie eine Eigenschaft, eine Methode und ein Ereignis für die Schnittstelle, indem Sie den folgenden Code zwischen den Anweisungen
Interface
undEnd Interface
platzieren:Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
Implementierung
Möglicherweise stellen Sie fest, dass sich die Syntax, die zum Deklarieren von Schnittstellenmembern verwendet wird, von der Syntax unterscheidet, die zum Deklarieren von Klassenmembern verwendet wird. Dieser Unterschied spiegelt die Tatsache wider, dass Schnittstellen keinen Implementierungscode enthalten können.
So implementieren Sie die Schnittstelle
Fügen Sie eine Klasse namens
ImplementationClass
hinzu, indem Sie die folgende Anweisung zuModule1
hinzufügen, hinter derEnd Interface
-Anweisung, aber vor derEnd Module
-Anweisung, und drücken Sie dann die EINGABETASTE:Class ImplementationClass
Wenn Sie in der integrierten Entwicklungsumgebung (IDE) arbeiten, stellt der Code-Editor eine passende
End Class
-Anweisung bereit, wenn Sie die EINGABETASTE drücken.Fügen Sie die folgende
Implements
-Anweisung zuImplementationClass
hinzu, die der von der Klasse implementierte Schnittstelle einen Namen gibt:Implements TestInterface
Wenn die
Implements
-Anweisung getrennt von anderen Elementen am Anfang einer Klasse oder Struktur aufgeführt wird, zeigt dies an, dass die Klasse oder Struktur eine Schnittstelle implementiert.Wenn Sie in der integrierten Entwicklungsumgebung (IDE) arbeiten, implementiert der Code-Editor die Klassenmember, die für
TestInterface
erforderlich sind, wenn Sie die EINGABETASTE drücken. Sie können dann den nächsten Schritt überspringen.Wenn Sie nicht in der integrierten Entwicklungsumgebung (IDE) arbeiten, müssen Sie alle Member der Schnittstelle
MyInterface
implementieren. Fügen Sie den folgenden Code zuImplementationClass
hinzu, umEvent1
,Method1
undProp1
zu implementieren:Event Event1() Implements TestInterface.Event1 Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1 End Sub Public Property Prop1() As Integer Implements TestInterface.Prop1 Get End Get Set(ByVal value As Integer) End Set End Property
Die
Implements
-Anweisung benennt die Schnittstelle und den Schnittstellenmember, die implementiert werden.Schließen Sie die Definition von
Prop1
ab, indem Sie der Klasse, die den Eigenschaftswert gespeichert hat, ein privates Feld hinzufügen:' Holds the value of the property. Private pval As Integer
Geben Sie den Wert des
pval
aus dem get-Accessor der Eigenschaft zurück.Return pval
Legen Sie den Wert von
pval
im get-Accessor der Eigenschaft fest.pval = value
Schließen Sie die Definition von
Method1
ab, indem Sie den folgenden Code hinzufügen.MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
So testen Sie die Implementierung der Schnittstelle
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Startformular für Ihr Projekt, und klicken Sie dann auf Code anzeigen. Der Editor zeigt die Klasse für Ihr Startformular an. Standardmäßig heißt das Startformular
Form1
.Fügen Sie der
Form1
-Klasse das folgendetestInstance
-Feld hinzu:Dim WithEvents testInstance As TestInterface
Wenn Sie
testInstance
alsWithEvents
deklarieren, kann dieForm1
--Klasse ihre Ereignisse behandeln.Fügen Sie der
Form1
-Klasse den folgenden Ereignishandler hinzu, um Ereignisse zu behandeln, die vontestInstance
ausgelöst werden:Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub
Fügen Sie der
Form1
-Klasse eine Unterroutine namensTest
hinzu, um die Implementierungsklasse zu testen:Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. testInstance = T ' Set a property. testInstance.Prop1 = 9 ' Read the property. MsgBox("Prop1 was set to " & testInstance.Prop1) ' Test the method and raise an event. testInstance.Method1(5) End Sub
Die
Test
-Prozedur erstellt eine Instanz der Klasse, dieMyInterface
implementiert, weist demtestInstance
-Feld diese Instanz zu, legt eine Eigenschaft fest und führt eine Methode über die Schnittstelle aus.Fügen Sie Code hinzu, um die
Test
-Prozedur aus derForm1 Load
-Prozedur Ihres Startformulars aufzurufen:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test() ' Test the class. End Sub
Drücken Sie F5, um die
Test
-Prozedur auszuführen. Die Meldung „Prop1 wurde auf 9 festgelegt“ wird angezeigt. Nachdem Sie auf „OK“ geklickt haben, wird die Meldung „Der X-Parameter für Method1 ist 5“ angezeigt. Klicken Sie auf „OK“, und die Meldung „Der Ereignishandler hat das Ereignis abgefangen“ wird angezeigt.