Interface-instructie (Visual Basic)
Declareert de naam van een interface en introduceert de definities van de leden die de interface omvat.
Syntaxis
[ <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
generator
Term | Definitie |
---|---|
attributelist |
Optioneel. Zie de lijst met kenmerken. |
accessmodifier |
Optioneel. Dit kan een van de volgende zijn: - Openbaar - Beschermd - Vriend - Privé - Beveiligde vriend - Privé beveiligd Zie Access-niveaus in Visual Basic. |
Shadows |
Optioneel. Zie schaduwen. |
name |
Vereist. Naam van deze interface. Zie Gedeclareerde elementnamen. |
Of |
Optioneel. Hiermee geeft u op dat dit een algemene interface is. |
typelist |
Vereist als u het trefwoord Van gebruikt. Lijst met typeparameters voor deze interface. Optioneel kan elke typeparameter worden gedeclareerd met behulp van In en Out algemene modifiers. Zie Lijst met typen. |
Inherits |
Optioneel. Geeft aan dat deze interface de kenmerken en leden van een andere interface of interfaces over neemt. Zie Overname-instructie. |
interfacenames |
Vereist als u de Inherits instructie gebruikt. De namen van de interfaces waaruit deze interface is afgeleid. |
modifiers |
Optioneel. De juiste modifiers voor het interfacelid dat wordt gedefinieerd. |
Property |
Optioneel. Hiermee definieert u een eigenschap die lid is van de interface. |
Function |
Optioneel. Definieert een Function procedure die lid is van de interface. |
Sub |
Optioneel. Definieert een Sub procedure die lid is van de interface. |
Event |
Optioneel. Hiermee definieert u een gebeurtenis die lid is van de interface. |
Interface |
Optioneel. Hiermee definieert u een interface die is genest binnen deze interface. De geneste interfacedefinitie moet worden beëindigd met een End Interface instructie. |
Class |
Optioneel. Definieert een klasse die lid is van de interface. De definitie van de lidklasse moet worden beëindigd met een End Class instructie. |
Structure |
Optioneel. Definieert een structuur die lid is van de interface. De definitie van de lidstructuur moet worden beëindigd met een End Structure instructie. |
membername |
Vereist voor elke eigenschap, procedure, gebeurtenis, interface, klasse of structuur die is gedefinieerd als lid van de interface. De naam van het lid. |
End Interface |
Hiermee wordt de Interface definitie beëindigd. |
Opmerkingen
Een interface definieert een set leden, zoals eigenschappen en procedures, die klassen en structuren kunnen implementeren. De interface definieert alleen de handtekeningen van de leden en niet hun interne werking.
Een klasse of structuur implementeert de interface door code op te geven voor elk lid dat door de interface is gedefinieerd. Ten slotte bestaat er een object in het geheugen wanneer de toepassing een exemplaar maakt op basis van die klasse of structuur. Zie Objecten en klassen en interfaces voor meer informatie.
U kunt alleen op naamruimte- of moduleniveau gebruiken Interface
. Dit betekent dat de declaratiecontext voor een interface een bronbestand, naamruimte, klasse, structuur, module of interface moet zijn en geen procedure of blok kan zijn. Zie Declaratiecontexten en standaardtoegangsniveaus voor meer informatie.
Interfaces worden standaard gebruikt voor toegang tot vrienden . U kunt hun toegangsniveaus aanpassen met de toegangsaanpassingen. Zie Access-niveaus in Visual Basic voor meer informatie.
Regels
Geneste interfaces. U kunt de ene interface binnen een andere interface definiëren. De buitenste interface wordt de bijbehorende interface genoemd en de interne interface wordt een geneste interface genoemd.
Verklaring van lid. Wanneer u een eigenschap of procedure declareert als lid van een interface, definieert u alleen de handtekening van die eigenschap of procedure. Dit omvat het elementtype (eigenschap of procedure), de parameters en parametertypen en het retourtype. Daarom gebruikt de liddefinitie slechts één regel code en afsluitinstructies zoals
End Function
ofEnd Property
zijn ze niet geldig in een interface.Wanneer u daarentegen een opsomming of structuur of geneste klasse of interface definieert, moet u hun gegevensleden opnemen.
Lidmodifiers. U kunt geen toegangsmodifiers gebruiken bij het definiëren van moduleleden, noch kunt u gedeelde of procedureaanpassingen opgeven, behalve overloads. U kunt elk lid declareren met Schaduwen en u kunt Standaard gebruiken bij het definiëren van een eigenschap, evenals ReadOnly of WriteOnly.
Overname. Als de interface gebruikmaakt van de instructie Overnames, kunt u een of meer basisinterfaces opgeven. U kunt overnemen van twee interfaces, zelfs als ze elk een lid met dezelfde naam definiëren. Als u dit doet, moet de implementatiecode naamkwalificatie gebruiken om op te geven welk lid deze implementeert.
Een interface kan niet worden overgenomen van een andere interface met een meer beperkend toegangsniveau. Een interface kan bijvoorbeeld
Public
niet worden overgenomen van eenFriend
interface.Een interface kan niet worden overgenomen van een interface die erin is genest.
Uitvoering. Wanneer een klasse de instructie Implements gebruikt om deze interface te implementeren, moet deze elk lid implementeren dat in de interface is gedefinieerd. Bovendien moet elke handtekening in de implementatiecode exact overeenkomen met de bijbehorende handtekening die in deze interface is gedefinieerd. De naam van het lid in de implementatiecode hoeft echter niet overeen te komen met de lidnaam zoals gedefinieerd in de interface.
Wanneer een klasse een procedure uitvoert, kan deze de procedure niet aanwijzen als
Shared
.Standaardeigenschap. Een interface kan maximaal één eigenschap opgeven als de standaardeigenschap, waarnaar kan worden verwezen zonder de naam van de eigenschap te gebruiken. U geeft een dergelijke eigenschap op door deze te declareren met de standaardaanpassingsfunctie .
Dit betekent dat een interface alleen een standaardeigenschap kan definiëren als deze geen eigenschap overgeeft.
Gedrag
Toegangsniveau. Alle interfaceleden hebben impliciet openbare toegang. U kunt geen toegangsaanpassing gebruiken bij het definiëren van een lid. Een klasse die de interface implementeert, kan echter een toegangsniveau declareren voor elk geïmplementeerd lid.
Als u een klasse-exemplaar toewijst aan een variabele, kan het toegangsniveau van de leden ervan afhankelijk zijn van of het gegevenstype van de variabele de onderliggende interface of de implementatieklasse is. In het volgende voorbeeld ziet u dit.
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()
Als u klasleden opent via
varAsInterface
, hebben ze allemaal openbare toegang. Als u echter toegang krijgt tot leden viavarAsClass
, heeft deSub
proceduredoSomething
privétoegang.Reikwijdte. Een interface valt binnen het bereik van de naamruimte, klasse, structuur of module.
Het bereik van elk interfacelid is de volledige interface.
Levensduur. Een interface heeft zelf geen levensduur, noch zijn leden. Wanneer een klasse een interface implementeert en een object wordt gemaakt als een exemplaar van die klasse, heeft het object een levensduur binnen de toepassing waarin het wordt uitgevoerd. Zie 'Levensduur' in de klasse-instructie voor meer informatie.
Opmerking
In het volgende voorbeeld wordt de instructie gebruikt om een interface met de Interface
naam thisInterface
te definiëren, die moet worden geïmplementeerd met een Property
instructie en een Function
instructie.
Public Interface thisInterface
Property ThisProp(ByVal thisStr As String) As Char
Function ThisFunc(ByVal thisInt As Integer) As Integer
End Interface
Houd er rekening mee dat de Property
en-instructies Function
geen blokken introduceren die eindigen op End Property
en End Function
binnen de interface. De interface definieert alleen de handtekeningen van de leden. De volledige Property
blokken worden Function
weergegeven in een klasse die wordt geïmplementeerd thisInterface
.