Interface-Anweisung (Visual Basic)
Hiermit wird der Name einer Schnittstelle deklariert, und die Definitionen der Member werden eingeführt, 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 |
Dies ist optional. Siehe Attributliste. |
accessmodifier |
Optional. Dabei kann es sich um eine der folgenden Methoden handeln: - Public - Protected - Friend - Privat - Protected Friend - Private Protected Siehe Access levels in Visual Basic. |
Shadows |
Optional. Siehe Shadows. |
name |
Erforderlich. Dies ist der Name dieser Schnittstelle. Siehe Declared Element Names. |
Of |
Optional. Dieser Begriff gibt an, dass es sich um eine generische Schnittstelle handelt. |
typelist |
Dieser Begriff ist erforderlich, wenn Sie das Of-Schlüsselwort verwenden. Dies ist eine Liste der generischen Typparameter für diese Schnittstelle. Optional kann jeder generischer Typparameter mit den generischen Modifizierern In und Out als Variante deklariert werden. Weitere Informationen finden Sie unter Typliste. |
Inherits |
Optional. Hiermit wird angegeben, dass diese Schnittstelle die Attribute und Member einer anderen Schnittstelle oder von Schnittstellen erbt. Weitere Informationen finden Sie unter Inherits-Anweisung. |
interfacenames |
Erforderlich, wenn Sie die Inherits -Anweisung verwenden. Die Namen der Schnittstellen, von denen diese Schnittstelle abgeleitet wird. |
modifiers |
Optional. Dies sind geeignete Modifizierer für den zu definierenden Schnittstellenmember. |
Property |
Optional. Hiermit wird eine Eigenschaft definiert, die ein Member der Schnittstelle ist. |
Function |
Optional. Hiermit wird eine Function -Prozedur definiert, die Member der Schnittstelle ist. |
Sub |
Optional. Hiermit wird eine Sub -Prozedur definiert, die Member der Schnittstelle ist. |
Event |
Optional. Hiermit wird ein Ereignis definiert, das Member der Schnittstelle ist. |
Interface |
Optional. Hiermit wird eine Schnittstelle definiert, die in dieser Schnittstelle geschachtelt ist. Die Definition der geschachtelten Schnittstelle muss mit einer End Interface -Anweisung beendet werden. |
Class |
Optional. Hiermit wird eine Klasse definiert, die Member der Schnittstelle ist. Die Memberklassendefinition muss mit einer End Class -Anweisung beendet werden. |
Structure |
Optional. Hiermit wird eine Struktur definiert, die Member der Schnittstelle ist. Die Memberstrukturdefinition muss mit einer End Structure -Anweisung beendet werden. |
membername |
Dieser Begriff ist für jedes Ereignis und jede Eigenschaft, Prozedur, Schnittstelle, Klasse oder Struktur erforderlich, das bzw. die als Member der Schnittstelle definiert ist. Der Name des Members. |
End Interface |
Beendet die Interface -Definition. |
Bemerkungen
Eine Schnittstelle definiert eine Reihe von Membern (z. B. Eigenschaften und Prozeduren), die Klassen und Strukturen implementieren können. Die Schnittstelle definiert nur die Signaturen der Member und nicht deren interne Funktionen.
Eine Klasse oder Struktur implementiert die Schnittstelle durch Bereitstellen von Code für jeden von der Schnittstelle definierten Member. Wenn die Anwendung schließlich eine Instanz über diese Klasse oder Struktur erstellt, ist ein Objekt vorhanden und wird im Arbeitsspeicher ausgeführt. Weitere Informationen finden Sie unter Objekte und Klassen und Schnittstellen.
Interface
kann nur auf Namespace- oder Modulebene verwendet werden. 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 weder eine Prozedur noch ein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.
Für Schnittstellen ist standardmäßig der Friend-Zugriff festgelegt. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.
Regeln
Schachtelungsschnittstellen: Sie können eine Schnittstelle innerhalb einer anderen definieren. Die äußere Schnittstelle wird als enthaltende Schnittstelle bezeichnet, die innere als geschachtelte Schnittstelle.
Memberdeklaration. Wenn Sie eine Eigenschaft oder Prozedur als Member 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 Grund verwendet die Memberdefinition nur eine Codezeile, und beendende Anweisungen wie
End Function
oderEnd Property
sind in einer Schnittstelle nicht gültig.Wenn Sie jedoch eine Enumeration oder Struktur oder eine geschachtelte Klasse oder Schnittstelle definieren, ist es erforderlich, ihre Datenmember einzuschließen.
Membermodifizierer: Sie können keine Zugriffsmodifizierer verwenden, wenn Sie Modulmember definieren, und mit Ausnahme von Überladungen können Sie auch keine Shared-Elemente oder Prozedurmodifizierer angeben. Sie können jeden Member mit Shadows deklarieren, und Sie können beim Definieren einer Eigenschaft Default sowie ReadOnly oder WriteOnly verwenden.
Vererbung. Wenn die Schnittstelle die Inherits-Anweisung verwendet, können Sie eine oder mehrere Basisschnittstellen angeben. Sie können von zwei Schnittstellen auch dann erben, wenn diese jeweils einen Member mit demselben Namen definieren. Wenn Sie so vorgehen, muss der implementierende Code Namensqualifizierung verwenden, um anzugeben, welchen Member er implementiert.
Eine Schnittstelle kann nicht von einer anderen Schnittstelle mit einer restriktiveren Zugriffsebene erben. Beispielsweise kann eine
Public
-Schnittstelle nicht von einerFriend
-Schnittstelle erben.Eine Schnittstelle kann nicht von einer in ihr geschachtelten Schnittstelle erben.
Implementierung. Wenn eine Klasse die Implements-Anweisung verwendet, um diese Schnittstelle zu implementieren, muss jeder Member implementiert werden, der 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 Members im Implementierungscode muss jedoch nicht mit dem in der Schnittstelle definierten Membernamen übereinstimmen.
Wenn eine Klasse eine Prozedur implementiert, kann sie die Prozedur nicht als
Shared
festlegen.Standardeigenschaft. 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 Default-Modifizierer deklarieren.
Beachten Sie, dass eine Schnittstelle eine Standardeigenschaft nur definieren kann, wenn sie keine erbt.
Verhalten
Zugriffsebene: Alle Schnittstellenmember verfügen implizit über Public-Zugriff. Sie können beim Definieren eines Members keinen Zugriffsmodifizierer verwenden. Eine Klasse, die die Schnittstelle implementiert, kann jedoch eine Zugriffsebene für jeden implementierten Member 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
varAsInterface
auf Klassenmember zugreifen, verfügen sie alle über öffentlichen Zugriff. Wenn Sie jedoch übervarAsClass
auf Member zugreifen, hat dieSub
-ProzedurdoSomething
privaten Zugriff.Umfang. Der Gültigkeitsbereich einer Schnittstelle umfasst den Namespace, die Klasse, die Struktur oder das Modul.
Der Gültigkeitsbereich jedes Schnittstellenmembers ist die gesamte Schnittstelle.
Lifetime (Lebensdauer). Schnittstellen und ihre Member haben selbst keine Lebensdauer. 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 „Lebensdauer“ im Artikel zur Class-Anweisung.
Beispiel
Im folgenden Beispiel wird die Interface
-Anweisung verwendet, um eine Schnittstelle namens thisInterface
zu 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 Anweisungen Property
und Function
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 Blöcke Property
und Function
werden in einer Klasse angezeigt, die thisInterface
implementiert.