Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Deklariert den Namen einer Schnittstelle und führt die Definitionen der Elemente ein, die die Schnittstelle umfasst.
Syntax
[ <attributelist> ] [ accessmodifier ] [ Shadows ] _
Interface name [ ( Of typelist ) ]
[ Inherits interfacenames ]
[ [ modifiers ] Property membername ]
[ [ modifiers ] Function membername ]
[ [ modifiers ] Sub membername ]
[ [ modifiers ] Event membername ]
[ [ modifiers ] Interface membername ]
[ [ modifiers ] Class membername ]
[ [ modifiers ] Structure membername ]
End Interface
Bestandteile
| Begriff | Definition |
|---|---|
attributelist |
Wahlfrei. Siehe Attributliste. |
accessmodifier |
Wahlfrei. Dabei kann es sich um eine der folgenden Methoden handeln: - Öffentlich - Geschützt - Freund - Privat - Geschützter Freund - Privat geschützt Siehe Access levels in Visual Basic. |
Shadows |
Wahlfrei. Siehe Shadows. |
name |
Erforderlich. Name dieser Schnittstelle. Siehe deklarierte Elementnamen. |
Of |
Wahlfrei. Gibt an, dass es sich um eine generische Schnittstelle handelt. |
typelist |
Erforderlich, wenn Sie das Schlüsselwort "Of" verwenden. Liste der Typparameter für diese Schnittstelle. Optional kann jeder Typparameter mithilfe von InOut generischen Modifizierern variant deklariert werden. Siehe Typliste. |
Inherits |
Wahlfrei. Gibt an, dass diese Schnittstelle die Attribute und Member einer anderen Schnittstelle oder Schnittstellen erbt. Siehe Inherits-Anweisung. |
interfacenames |
Erforderlich, wenn Sie die Inherits Anweisung verwenden. Die Namen der Schnittstellen, von denen diese Schnittstelle abgeleitet wird. |
modifiers |
Wahlfrei. Geeignete Modifizierer für das zu definierende Schnittstellenelement. |
Property |
Wahlfrei. Definiert eine Eigenschaft, die ein Element der Schnittstelle ist. |
Function |
Wahlfrei. Definiert eine Function Prozedur, die ein Element der Schnittstelle ist. |
Sub |
Wahlfrei. Definiert eine Sub Prozedur, die ein Element der Schnittstelle ist. |
Event |
Wahlfrei. Definiert ein Ereignis, das mitglied der Schnittstelle ist. |
Interface |
Wahlfrei. Definiert eine Schnittstelle, die in dieser Schnittstelle geschachtelt ist. Die definition der geschachtelten Schnittstelle muss mit einer End Interface Anweisung beendet werden. |
Class |
Wahlfrei. Definiert eine Klasse, die ein Element der Schnittstelle ist. Die Memberklassendefinition muss mit einer End Class Anweisung beendet werden. |
Structure |
Wahlfrei. Definiert eine Struktur, die ein Element der Schnittstelle ist. Die Memberstrukturdefinition muss mit einer End Structure Anweisung beendet werden. |
membername |
Erforderlich für jede Eigenschaft, Prozedur, Ereignis, Schnittstelle, Klasse oder Struktur, die als Element der Schnittstelle definiert ist. Der Name des Elements. |
End Interface |
Beendet die Interface Definition. |
Bemerkungen
Eine Schnittstelle definiert eine Reihe von Elementen, z. B. Eigenschaften und Prozeduren, die Klassen und Strukturen implementieren können. Die Schnittstelle definiert nur die Signaturen der Member und nicht deren interne Arbeit.
Eine Klasse oder Struktur implementiert die Schnittstelle durch Bereitstellen von Code für jedes von der Schnittstelle definierte Element. Wenn die Anwendung schließlich eine Instanz aus dieser Klasse oder Struktur erstellt, ist ein Objekt vorhanden und wird im Arbeitsspeicher ausgeführt. Weitere Informationen finden Sie unter Objekte und Klassen und Schnittstellen.
Sie können nur auf Namespace- oder Modulebene verwenden Interface . Dies bedeutet, dass der Deklarationskontext für eine Schnittstelle eine Quelldatei, ein Namespace, eine Klasse, eine Struktur, ein Modul oder eine Schnittstelle sein muss und keine Prozedur oder ein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.
Schnittstellen sind standardmäßig für den Friend-Zugriff verfügbar. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Access-Ebenen in Visual Basic.
Regeln
Schachtelungsschnittstellen. Sie können eine Schnittstelle innerhalb einer anderen definieren. Die äußere Schnittstelle wird als enthaltende Schnittstelle bezeichnet, und die innere Schnittstelle wird als geschachtelte Schnittstelle bezeichnet.
Memberdeklaration. Wenn Sie eine Eigenschaft oder Prozedur als Element einer Schnittstelle deklarieren, definieren Sie nur die Signatur dieser Eigenschaft oder Prozedur. Dazu gehören der Elementtyp (Eigenschaft oder Prozedur), die Parameter und Parametertypen sowie der Rückgabetyp. Aus diesem Gründen verwendet die Memberdefinition nur eine Codezeile und beendende Anweisungen, z
End Function. B. oderEnd Propertysind in einer Schnittstelle nicht gültig.Wenn Sie dagegen eine Aufzählung oder Struktur oder eine geschachtelte Klasse oder Schnittstelle definieren, ist es erforderlich, ihre Datenmember einzuschließen.
Modifizierer für Member. Sie können keine Zugriffsmodifizierer verwenden, wenn Sie Modulmember definieren, oder Sie können " Shared" oder einen Prozedurmodifizierer mit Ausnahme von Überladungen angeben. Sie können jedes Element mit Schatten deklarieren, und Sie können "Default " beim Definieren einer Eigenschaft sowie "ReadOnly " oder "WriteOnly" verwenden.
Erbschaft. Wenn die Schnittstelle die Inherits-Anweisung verwendet, können Sie eine oder mehrere Basisschnittstellen angeben. Sie können von zwei Schnittstellen erben, auch wenn sie jeweils ein Element mit demselben Namen definieren. In diesem Beispiel muss der Implementierungscode die Namensqualifizierung verwenden, um anzugeben, welches Mitglied es implementiert.
Eine Schnittstelle kann nicht von einer anderen Schnittstelle mit einer restriktiveren Zugriffsebene erben. Beispielsweise kann eine
PublicSchnittstelle nicht von einerFriendSchnittstelle erben.Eine Schnittstelle kann nicht von einer darin geschachtelten Schnittstelle erben.
Implementierung. Wenn eine Klasse die Implements-Anweisung verwendet, um diese Schnittstelle zu implementieren, muss jedes Element implementiert werden, das innerhalb der Schnittstelle definiert ist. Darüber hinaus muss jede Signatur im Implementierungscode genau mit der in dieser Schnittstelle definierten entsprechenden Signatur übereinstimmen. Der Name des Mitglieds im Implementierungscode muss jedoch nicht mit dem Membernamen übereinstimmen, wie in der Schnittstelle definiert.
Wenn eine Klasse eine Prozedur implementiert, kann sie die Prozedur nicht als
Shared.Default-Eigenschaft. Eine Schnittstelle kann höchstens eine Eigenschaft als Standardeigenschaft angeben, auf die ohne den Eigenschaftennamen verwiesen werden kann. Sie geben eine solche Eigenschaft an, indem Sie sie mit dem Standardmodifizierer deklarieren.
Beachten Sie, dass eine Schnittstelle eine Standardeigenschaft nur definieren kann, wenn sie keine erbt.
Verhalten
Zugriffsebene. Alle Schnittstellenmitglieder verfügen implizit über öffentlichen Zugriff. Sie können beim Definieren eines Elements keinen Zugriffsmodifizierer verwenden. Eine Klasse, die die Schnittstelle implementiert, kann jedoch eine Zugriffsstufe für jedes implementierte Element deklarieren.
Wenn Sie einer Variablen eine Klasseninstanz zuweisen, kann die Zugriffsebene ihrer Member davon abhängen, ob der Datentyp der Variablen die zugrunde liegende Schnittstelle oder die implementierende Klasse ist. Dies wird anhand des folgenden Beispiels veranschaulicht.
Public Interface IDemo Sub DoSomething() End Interface Public Class implementIDemo Implements IDemo Private Sub DoSomething() Implements IDemo.DoSomething End Sub End Class Dim varAsInterface As IDemo = New implementIDemo() Dim varAsClass As implementIDemo = New implementIDemo()Wenn Sie über auf Kursmitglieder
varAsInterfacezugreifen, haben sie alle öffentlichen Zugriff. Wenn Sie jedoch auf MitgliedervarAsClasszugreifen, hat dieSubProzedurdoSomethingprivaten Zugriff.Bereich. Eine Schnittstelle befindet sich im gesamten Namespace, der Klasse, der Struktur oder dem Modul.
Der Bereich jedes Schnittstellenelements ist die gesamte Schnittstelle.
Lebensdauer. Eine Schnittstelle selbst hat weder eine Lebensdauer noch ihre Mitglieder. Wenn eine Klasse eine Schnittstelle implementiert und ein Objekt als Instanz dieser Klasse erstellt wird, hat das Objekt eine Lebensdauer innerhalb der Anwendung, in der es ausgeführt wird. Weitere Informationen finden Sie unter "Lifetime" in Class Statement.
Beispiel
Im folgenden Beispiel wird die Interface Anweisung verwendet, um eine Schnittstelle namens thisInterfacezu definieren, die mit einer Property Anweisung und einer Function Anweisung implementiert werden muss.
Public Interface thisInterface
Property ThisProp(ByVal thisStr As String) As Char
Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface
Beachten Sie, dass die und Function die Property Anweisungen keine Blöcke einführen, die mit End Property und End Function innerhalb der Schnittstelle enden. Die Schnittstelle definiert nur die Signaturen ihrer Member. Die vollständigen PropertyFunctionthisInterfaceBlöcke werden in einer Klasse angezeigt, die implementiert wird.