Delen via


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

  1. Open een nieuw Visual Basic Windows-toepassingsproject.

  2. Voeg een nieuwe module toe aan het project door in het menu Project op Module toevoegen te klikken.

  3. Geef de nieuwe module Module1.vb een naam en klik op Toevoegen. De code voor de nieuwe module wordt weergegeven.

  4. Definieer een interface met de naam TestInterfaceModule1 binnen door tussen de en End Module instructies Module te typen Interface TestInterface en vervolgens op Enter te drukken. De Code-editor laat het Interface trefwoord inspringen en voegt een End Interface instructie toe om een codeblok te vormen.

  5. Definieer een eigenschap, methode en gebeurtenis voor de interface door de volgende code tussen de Interface en End 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

  1. Voeg een klasse toe met de naam ImplementationClass door de volgende instructie toe te voegen aan Module1, na de End Interface instructie, maar vóór de End 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.

  2. Voeg de volgende Implements instructie toe aan ImplementationClass, 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.

  3. Als u niet in de geïntegreerde ontwikkelomgeving werkt, moet u alle leden van de interface MyInterfaceimplementeren. Voeg de volgende code toe om te ImplementationClass implementeren Event1, Method1en Prop1:

    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.

  4. 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
    
  5. 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

  1. 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.

  2. Voeg het volgende testInstance veld toe aan de Form1 klasse:

    Dim WithEvents testInstance As TestInterface
    

    Door te declareren testInstance als WithEvents, kan de Form1 klasse de gebeurtenissen afhandelen.

  3. Voeg de volgende gebeurtenis-handler toe aan de Form1 klasse om gebeurtenissen te verwerken die worden gegenereerd door testInstance:

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Voeg een subroutine toe aan Test de Form1 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 implementeert MyInterface, wijst dat exemplaar toe aan het testInstance veld, stelt een eigenschap in en voert een methode uit via de interface.

  5. Voeg code toe om de Test procedure aan te roepen vanuit de Form1 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
    
  6. 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