Gränssnittsuttryck (Visual Basic)

Deklarerar namnet på ett gränssnitt och introducerar definitionerna av de medlemmar som gränssnittet består av.

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  

Delar

Period Definition
attributelist Valfritt. Se Attributlista.
accessmodifier Valfritt. Kan vara något av följande:

- Offentliga
- Skyddade
- Vän
- Privat
- Skyddad vän
- Privat skyddad

Se Åtkomstnivåer i Visual Basic.
Shadows Valfritt. Se Skuggor.
name Obligatoriska. Namnet på det här gränssnittet. Se Deklarerade elementnamn.
Of Valfritt. Anger att detta är ett allmänt gränssnitt.
typelist Krävs om du använder nyckelordet Av . Lista över typparametrar för det här gränssnittet. Alternativt kan varje typparameter deklareras som variant med hjälp In av och Out allmänna modifierare. Se Typlista.
Inherits Valfritt. Anger att det här gränssnittet ärver attributen och medlemmarna i ett annat gränssnitt eller gränssnitt. Se Ärver-instruktion.
interfacenames Krävs om du använder -instruktionen Inherits . Namnen på de gränssnitt som det här gränssnittet härleds från.
modifiers Valfritt. Lämpliga modifierare för den gränssnittsmedlem som definieras.
Property Valfritt. Definierar en egenskap som är medlem i gränssnittet.
Function Valfritt. Definierar en Function procedur som är medlem i gränssnittet.
Sub Valfritt. Definierar en Sub procedur som är medlem i gränssnittet.
Event Valfritt. Definierar en händelse som är medlem i gränssnittet.
Interface Valfritt. Definierar ett gränssnitt som är kapslat i det här gränssnittet. Den kapslade gränssnittsdefinitionen måste avslutas med en End Interface -instruktion.
Class Valfritt. Definierar en klass som är medlem i gränssnittet. Medlemsklassdefinitionen måste avslutas med en End Class instruktion.
Structure Valfritt. Definierar en struktur som är medlem i gränssnittet. Medlemsstrukturdefinitionen måste avslutas med en End Structure instruktion.
membername Krävs för varje egenskap, procedur, händelse, gränssnitt, klass eller struktur som definieras som medlem i gränssnittet. Namnet på medlemmen.
End Interface Interface Avslutar definitionen.

Kommentarer

Ett gränssnitt definierar en uppsättning medlemmar, till exempel egenskaper och procedurer, som klasser och strukturer kan implementera. Gränssnittet definierar endast medlemmarnas signaturer och inte deras interna arbete.

En klass eller struktur implementerar gränssnittet genom att ange kod för varje medlem som definieras av gränssnittet. När programmet slutligen skapar en instans från den klassen eller strukturen finns ett objekt och körs i minnet. Mer information finns i Objekt och klasser och gränssnitt.

Du kan bara använda Interface på namnområdes- eller modulnivå. Det innebär att deklarationskontexten för ett gränssnitt måste vara en källfil, namnrymd, klass, struktur, modul eller gränssnitt och kan inte vara en procedur eller ett block. Mer information finns i Deklarationskontexter och standardåtkomstnivåer.

Gränssnitt som standard för vänåtkomst . Du kan justera deras åtkomstnivåer med åtkomstmodifierarna. Mer information finns i Åtkomstnivåer i Visual Basic.

Regler

  • Kapslingsgränssnitt. Du kan definiera ett gränssnitt i ett annat. Det yttre gränssnittet kallas för det innehållande gränssnittet och det inre gränssnittet kallas för ett kapslat gränssnitt.

  • Medlemsdeklaration. När du deklarerar en egenskap eller procedur som medlem i ett gränssnitt definierar du bara signaturen för den egenskapen eller proceduren. Detta inkluderar elementtypen (egenskap eller procedur), dess parametrar och parametertyper och dess returtyp. På grund av detta använder medlemsdefinitionen endast en kodrad och avslutande instruktioner som End Function eller End Property är ogiltiga i ett gränssnitt.

    När du däremot definierar en uppräkning eller struktur, eller en kapslad klass eller ett gränssnitt, är det nödvändigt att inkludera deras datamedlemmar.

  • Medlemsmodifierare. Du kan inte använda några åtkomstmodifierare när du definierar modulmedlemmar, och du kan inte heller ange en modifierare för delade eller procedurer förutom överlagringar. Du kan deklarera alla medlemmar med Skuggor och du kan använda Standard när du definierar en egenskap, samt ReadOnly eller WriteOnly.

  • Arv. Om gränssnittet använder instruktionen Ärver kan du ange ett eller flera basgränssnitt. Du kan ärva från två gränssnitt även om de definierar en medlem med samma namn. Om du gör det måste implementeringskoden använda namnkvalifikation för att ange vilken medlem den implementerar.

    Ett gränssnitt kan inte ärva från ett annat gränssnitt med en mer restriktiv åtkomstnivå. Ett gränssnitt kan till exempel Public inte ärva från ett Friend gränssnitt.

    Ett gränssnitt kan inte ärva från ett gränssnitt som är kapslat i det.

  • Genomförandet. När en klass använder Implements-instruktionen för att implementera det här gränssnittet måste den implementera varje medlem som definierats i gränssnittet. Dessutom måste varje signatur i implementeringskoden exakt matcha motsvarande signatur som definierats i det här gränssnittet. Namnet på medlemmen i implementeringskoden behöver dock inte matcha medlemsnamnet enligt definitionen i gränssnittet.

    När en klass implementerar en procedur kan den inte ange proceduren som Shared.

  • Standardegenskap. Ett gränssnitt kan ange högst en egenskap som standardegenskap, som kan refereras till utan att använda egenskapsnamnet. Du anger en sådan egenskap genom att deklarera den med standardmodifieraren .

    Observera att det innebär att ett gränssnitt endast kan definiera en standardegenskap om den inte ärver någon.

Funktionssätt

  • Åtkomstnivå. Alla gränssnittsmedlemmar har implicit offentlig åtkomst. Du kan inte använda någon åtkomstmodifierare när du definierar en medlem. En klass som implementerar gränssnittet kan dock deklarera en åtkomstnivå för varje implementerad medlem.

    Om du tilldelar en klassinstans till en variabel kan åtkomstnivån för dess medlemmar bero på om variabelns datatyp är det underliggande gränssnittet eller implementeringsklassen. I följande exempel visas detta.

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

    Om du får åtkomst till klassmedlemmar via varAsInterfacehar de alla offentlig åtkomst. Men om du får åtkomst till medlemmar via varAsClasshar proceduren SubdoSomething privat åtkomst.

  • Omfattning. Ett gränssnitt finns i omfånget i hela namnområdet, klassen, strukturen eller modulen.

    Omfånget för varje gränssnittsmedlem är hela gränssnittet.

  • Livslängd. Ett gränssnitt har inte en livslängd, inte heller dess medlemmar. När en klass implementerar ett gränssnitt och ett objekt skapas som en instans av den klassen har objektet en livslängd i det program där det körs. Mer information finns i "Livslängd" i klassuttryck.

Exempel

I följande exempel används -instruktionen Interface för att definiera ett gränssnitt med namnet thisInterface, som måste implementeras med en Property -instruktion och en Function -instruktion.

Public Interface thisInterface
    Property ThisProp(ByVal thisStr As String) As Char
    Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface

Observera att Property instruktionerna och Function inte introducerar block som slutar med End Property och End Function i gränssnittet. Gränssnittet definierar endast signaturerna för dess medlemmar. De fullständiga Property blocken och Function visas i en klass som implementerar thisInterface.

Se även