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
ellerEnd 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 ettFriend
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
varAsInterface
har de alla offentlig åtkomst. Men om du får åtkomst till medlemmar viavarAsClass
har procedurenSub
doSomething
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
.