Share via


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:

    Siehe Zugriffsebenen in Visual Basic.

  • 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)

Module-Anweisung

Structure-Anweisung

Property-Anweisung

Function-Anweisung (Visual Basic)

Sub-Anweisung (Visual Basic)

Weitere Ressourcen

Schnittstellen in Visual Basic