Overzicht: Interfaces maken en implementeren (Visual Basic)
Interfaces beschrijven de kenmerken van eigenschappen, methoden en gebeurtenissen, maar laten de implementatiedetails over tot structuren of klassen.
In dit scenario ziet u hoe u een interface declareert en implementeert.
Notitie
Deze procedure bevat geen informatie over het maken van een gebruikersinterface.
Notitie
Mogelijk worden op uw computer verschillende namen of locaties weergegeven voor sommige elementen van de Visual Studio-gebruikersinterface in de volgende instructies. De Visual Studio-editie die u hebt en de instellingen die u gebruikt, bepalen deze elementen. Zie Personalizing the IDE (Personalizing the IDE) voor meer informatie.
Een interface definiëren
Open een nieuw Visual Basic Windows-toepassingsproject.
Voeg een nieuwe module toe aan het project door in het menu Project op Module toevoegen te klikken.
Geef de nieuwe module
Module1.vb
een naam en klik op Toevoegen. De code voor de nieuwe module wordt weergegeven.Definieer een interface met de naam
TestInterface
Module1
binnen door tussen de enEnd Module
instructiesModule
te typenInterface TestInterface
en vervolgens op Enter te drukken. De Code-editor laat hetInterface
trefwoord inspringen en voegt eenEnd Interface
instructie toe om een codeblok te vormen.Definieer een eigenschap, methode en gebeurtenis voor de interface door de volgende code tussen de
Interface
enEnd Interface
instructies te plaatsen:Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
Implementatie
U ziet mogelijk dat de syntaxis die wordt gebruikt om interfaceleden te declareren verschilt van de syntaxis die wordt gebruikt om klasseleden te declareren. Dit verschil weerspiegelt het feit dat interfaces geen implementatiecode kunnen bevatten.
De interface implementeren
Voeg een klasse toe met de naam
ImplementationClass
door de volgende instructie toe te voegen aanModule1
, na deEnd Interface
instructie, maar vóór deEnd Module
instructie en druk vervolgens op Enter:Class ImplementationClass
Als u in de geïntegreerde ontwikkelomgeving werkt, levert de Code-editor een overeenkomende
End Class
instructie wanneer u op Enter drukt.Voeg de volgende
Implements
instructie toe aanImplementationClass
, waarmee de interface wordt genoemd die door de klasse wordt geïmplementeerd:Implements TestInterface
Wanneer de instructie afzonderlijk van andere items boven aan een klasse of structuur wordt vermeld, geeft de
Implements
instructie aan dat de klasse of structuur een interface implementeert.Als u in de geïntegreerde ontwikkelomgeving werkt, implementeert de Code-editor de klasseleden die nodig zijn
TestInterface
wanneer u op Enter drukt en kunt u de volgende stap overslaan.Als u niet in de geïntegreerde ontwikkelomgeving werkt, moet u alle leden van de interface
MyInterface
implementeren. Voeg de volgende code toe om teImplementationClass
implementerenEvent1
,Method1
enProp1
:Event Event1() Implements TestInterface.Event1 Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1 End Sub Public Property Prop1() As Integer Implements TestInterface.Prop1 Get End Get Set(ByVal value As Integer) End Set End Property
De
Implements
instructie noemt de interface en het interfacelid dat wordt geïmplementeerd.Voltooi de definitie door
Prop1
een privéveld toe te voegen aan de klasse die de eigenschapswaarde heeft opgeslagen:' Holds the value of the property. Private pval As Integer
Retourneert de waarde van de
pval
eigenschap get accessor.Return pval
Stel de waarde in
pval
van de eigenschapssettoegangsor.pval = value
Voltooi de definitie door
Method1
de volgende code toe te voegen.MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
De implementatie van de interface testen
Klik met de rechtermuisknop op het opstartformulier voor uw project in Solution Explorer en klik op Code weergeven. De editor geeft de klasse voor uw opstartformulier weer. Standaard wordt het opstartformulier aangeroepen
Form1
.Voeg het volgende
testInstance
veld toe aan deForm1
klasse:Dim WithEvents testInstance As TestInterface
Door te declareren
testInstance
alsWithEvents
, kan deForm1
klasse de gebeurtenissen afhandelen.Voeg de volgende gebeurtenis-handler toe aan de
Form1
klasse om gebeurtenissen te verwerken die worden gegenereerd doortestInstance
:Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub
Voeg een subroutine toe aan
Test
deForm1
klasse om de implementatieklasse te testen:Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. testInstance = T ' Set a property. testInstance.Prop1 = 9 ' Read the property. MsgBox("Prop1 was set to " & testInstance.Prop1) ' Test the method and raise an event. testInstance.Method1(5) End Sub
De
Test
procedure maakt een exemplaar van de klasse die implementeertMyInterface
, wijst dat exemplaar toe aan hettestInstance
veld, stelt een eigenschap in en voert een methode uit via de interface.Voeg code toe om de
Test
procedure aan te roepen vanuit deForm1 Load
procedure van uw opstartformulier:Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Test() ' Test the class. End Sub
Voer de
Test
procedure uit door op F5 te drukken. Het bericht 'Prop1 is ingesteld op 9' wordt weergegeven. Nadat u op OK hebt geklikt, wordt het bericht 'De X-parameter voor Methode1 is 5' weergegeven. Klik op OK en het bericht 'De gebeurtenis-handler heeft de gebeurtenis gedetecteerd' wordt weergegeven.
Zie ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor