Interface-Anweisung (Visual Basic)
Aktualisiert: November 2007
Deklariert den Namen einer Schnittstelle und führt die Definitionen der Member ein, die die Schnittstelle umfasst.
[ <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
attributelist
Optional. Siehe Attributliste.accessmodifier
Optional. Einer der folgenden Werte ist möglich:Shadows
Optional. Siehe Shadows.name
Erforderlich. Name dieser Schnittstelle. Siehe Namen deklarierter Elemente.Of
Optional. Gibt an, dass dies eine generische Schnittstelle ist.typelist
Erforderlich, wenn Sie das Of-Schlüsselwort verwenden. Liste mit Typparametern für diese Schnittstelle. Siehe Typliste.Inherits
Optional. Gibt an, dass diese Schnittstelle die Attribute und die Member von anderen Schnittstellen erbt. Siehe Inherits-Anweisung.interfacenames
Erforderlich, wenn Sie die Inherits-Anweisung verwenden. Die Namen der Schnittstellen, von denen diese Schnittstelle abgeleitet wird.modifiers
Optional. Entsprechende Modifizierer für den zu definierenden Schnittstellenmember.Property
Optional. Definiert eine Eigenschaft, die ein Member der Schnittstelle ist.Function
Optional. Definiert eine Function-Prozedur, die ein Member der Schnittstelle ist.Sub
Optional. Definiert eine Sub-Prozedur, die ein Member der Schnittstelle ist.Event
Optional. Definiert ein Ereignis, das ein Member der Schnittstelle ist.Interface
Optional. Definiert eine Schnittstelle, die in dieser Schnittstelle geschachtelt ist. Die Definition der geschachtelten Schnittstelle muss mit einer End Interface-Anweisung enden.Class
Optional. Definiert eine Klasse, die ein Member der Schnittstelle ist. Die Klassendefinition des Members muss mit einer End Class-Anweisung enden.Structure
Optional. Definiert eine Struktur, die ein Member der Schnittstelle ist. Die Strukturdefinition des Members muss mit einer End Structure-Anweisung enden.membername
Für jede Eigenschaft, jede Prozedur, jedes Ereignis, jede Schnittstelle, jede Klasse oder Struktur erforderlich, die als Member der Schnittstelle definiert ist. Der Name des Members.End Interface
Beendet die Interface-Definition.
Hinweise
Eine Schnittstelle definiert einen Satz von Membern, z. B. Eigenschaften und Prozeduren, die von Klassen und Strukturen implementiert werden können. Die Schnittstelle definiert nur die Signaturen der Member und nicht ihre interne Ausführung.
Eine Klasse oder Struktur implementiert die Schnittstelle, indem sie Code für jeden Member angibt, der durch die Schnittstelle definiert wird. Wenn die Anwendung eine Instanz aus dieser Klasse oder Struktur erstellt, ist schließlich ein Objekt im Speicher vorhanden, das ausgeführt wird. Weitere Informationen finden Sie unter Objektorientiertes Programmieren in Visual Basic und unter Schnittstellen in Visual Basic.
Einen Vergleich von Schnittstellen und Klassen finden Sie unter Übersicht über 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.
Die Standardzugriffsebene für Schnittstellen ist Friend (Visual Basic). Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.
Regeln
Schachteln von Schnittstellen. Sie können eine Schnittstelle in einer anderen Schnittstelle definieren. Die äußere Schnittstelle wird als enthaltende Schnittstelle und die innere Schnittstelle als geschachtelte Schnittstelle bezeichnet.
Memberdeklaration. Wenn Sie eine Eigenschaft oder Prozedur als Member einer Schnittstelle deklarieren, definieren Sie nur die Signatur der Eigenschaft oder Prozedur. Diese umfasst den Elementtyp (Eigenschaft oder Prozedur), ihre Parameter und Parametertypen und ihren Rückgabetyp. Aus diesem Grund erfolgt die Memberdefinition in einer einzigen Codezeile, und Anweisungen zum Beenden, z. B. End Function oder End Property, sind in Schnittstellen nicht gültig.
Wenn Sie hingegen eine Enumeration, eine Struktur, eine geschachtelte Klasse oder geschachtelte Schnittstelle definieren, müssen ihre Datenmember in der Definition enthalten sein.
Membermodifizierer. Beim Definieren von Modulmembern können Sie keine Zugriffsmodifizierer verwenden, und Sie können weder Shared (Visual Basic) noch einen anderen Prozedurmodifizierer außer Overloads angeben. Sie können jeden Member mit Shadows deklarieren, und Sie können Default (Visual Basic) sowie ReadOnly (Visual Basic) und WriteOnly beim Definieren einer Eigenschaft verwenden.
Vererbung. Wenn die Schnittstelle das Inherits-Anweisung verwendet, können Sie eine oder mehrere Basisschnittstellen angeben. Sie können zwei Schnittstellen vererben, auch wenn jede Schnittstelle einen Member mit dem gleichen Namen definiert. In diesem Fall muss der implementierende Code Namensqualifizierung verwenden, um anzugeben, welcher Member implementiert wird.
Eine Schnittstelle kann nicht von einer anderen Schnittstelle mit einer restriktiveren Zugriffsebene erben. Eine Schnittstelle mit Public-Zugriff kann beispielweise nicht von einer Schnittstelle mit Friend-Zugriff erben.
Eine Schnittstelle kann nicht von einer Schnittstelle erben, die in ihr geschachtelt ist.
Implementierung. Wenn eine Klasse die Implements (Visual Basic)-Anweisung verwendet, um eine Schnittstelle zu implementieren, muss sie jeden in der Schnittstelle definierten Member implementieren. Außerdem muss jede Signatur im implementierenden Code genau mit der entsprechenden Signatur übereinstimmen, die in dieser Schnittstelle definiert ist. Der Name des Members im implementierenden Code 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. Für eine Schnittstelle kann höchstens eine Eigenschaft als Standardeigenschaft angegeben werden, auf die ohne Verwendung des Eigenschaftennamens verwiesen werden kann. Sie geben eine solche Eigenschaft an, indem Sie sie mit dem Default (Visual Basic)-Modifizierer deklarieren. Weitere Informationen finden Sie unter Standardeigenschaften.
Beachten Sie, dass daher eine Schnittstelle nur eine Standardeigenschaft definieren kann, wenn sie keine Standardeigenschaft erbt.
Verhalten
Zugriffsebene. Alle Schnittstellenmember weisen implizit Public (Visual Basic)-Zugriff auf. Sie können keinen Zugriffsmodifizierer verwenden, wenn Sie einen Member definieren. Eine Klasse jedoch, die die Schnittstelle implementiert, kann für jeden implementierten Member eine Zugriffsebene 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 auf Klassenmember über varAsInterface zugreifen, weisen sie alle öffentlichen Zugriff auf. Wenn Sie jedoch auf Member über varAsClass zugreifen, weist die Sub-Prozedur doSomething privaten Zugriff auf.
Gültigkeitsbereich. Der Gültigkeitsbereich einer Schnittstelle umfasst ihren Namespace, ihre Klasse, ihre Struktur oder ihr Modul.
Der Gültigkeitsbereich jedes Schnittstellenmembers umfasst die gesamte Schnittstelle.
Lebensdauer. Weder Schnittstellen noch ihre Member verfügen über eine Lebensdauer. Wenn eine Klasse eine Schnittstelle implementiert und ein Objekt als Instanz dieser Klasse erstellt wird, verfügt das Objekt über eine Lebensdauer in der Anwendung, in der es ausgeführt wird. Weitere Informationen finden Sie in Class-Anweisung (Visual Basic) unter "Lebensdauer".
Beispiel
Im folgenden Beispiel wird mit der Interface-Anweisung die Schnittstelle thisInterface definiert, 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 Property-Anweisung und die Function-Anweisung keine Blöcke in der Schnittstelle einführen, die mit End Property und End Function enden. Die Schnittstelle definiert nur die Signatur ihrer Member. Der vollständige Property-Block und Function-Block befinden sich in einer Klasse, die thisInterface implementiert.
Siehe auch
Konzepte
Generische Typen in Visual Basic
Referenz
Class-Anweisung (Visual Basic)
Function-Anweisung (Visual Basic)