Instrução Implements

Especifica uma ou mais interfaces, ou membros de inteface, que devem ser implementados na definição de classe ou estrutura na qual ela aparece.

Sintaxe

Implements interfacename [, ...]  
' -or-  
Implements interfacename.interfacemember [, ...]  

Partes

interfacename
Obrigatórios. Uma interface cujos procedimentos, propriedades e eventos devem ser implementados por membros correspondentes na classe ou na estrutura.

interfacemember
Obrigatórios. O membro de uma interface que está sendo implementada.

Comentários

Uma interface é uma coleção de protótipos que representam os membros (propriedades, procedimentos e eventos) que a interface encapsula. As interfaces contêm apenas as declarações para membros; classes e estruturas implementam esses membros. Para obter mais informações, consulte Interfaces.

A instrução Implements deve vir imediatamente após Class ou Structure.

Ao implementar uma interface, você deve implementar todos os membros nela declarados. Omitir qualquer membro é considerado um erro de sintaxe. Para implementar um membro individual, especifique a palavra-chave Implements (que é separada da instrução Implements) ao declarar o membro na classe ou na estrutura. Para obter mais informações, consulte Interfaces.

As classes podem usar implementações Privadas de propriedades e procedimentos, mas esses membros são acessíveis apenas pela conversão de uma instância da classe de implementação em uma variável declarada como do tipo da interface.

Exemplo 1

O exemplo a seguir mostra como usar a instrução Implements para implementar membros de uma interface. Ele define uma interface nomeada ICustomerInfo com um evento, uma propriedade e um procedimento. A classe customerInfo implementa todos os membros definidos na interface.

Public Interface ICustomerInfo
    Event UpdateComplete()
    Property CustomerName() As String
    Sub UpdateCustomerStatus()
End Interface

Public Class customerInfo
    Implements ICustomerInfo
    ' Storage for the property value.
    Private customerNameValue As String
    Public Event UpdateComplete() Implements ICustomerInfo.UpdateComplete
    Public Property CustomerName() As String _
        Implements ICustomerInfo.CustomerName
        Get
            Return customerNameValue
        End Get
        Set(ByVal value As String)
            ' The value parameter is passed to the Set procedure
            ' when the contents of this property are modified.
            customerNameValue = value
        End Set
    End Property

    Public Sub UpdateCustomerStatus() _
        Implements ICustomerInfo.UpdateCustomerStatus
        ' Add code here to update the status of this account.
        ' Raise an event to indicate that this procedure is done.
        RaiseEvent UpdateComplete()
    End Sub
End Class

Observe que a classe customerInfo usa a instrução Implements em uma linha de código-fonte separada para indicar que a classe implementa todos os membros da interface ICustomerInfo. Em seguida, cada membro da classe usa a palavra-chave Implementscomo parte de sua declaração de membro para indicar que ele implementa esse membro de interface.

Exemplo 2

Os dois procedimentos a seguir mostram como você pode usar a interface implementada no exemplo anterior. Para testar a implementação, adicione esses procedimentos ao projeto e chame o procedimento testImplements.

Public Sub TestImplements()
    ' This procedure tests the interface implementation by
    ' creating an instance of the class that implements ICustomerInfo.
    Dim cust As ICustomerInfo = New customerInfo()
    ' Associate an event handler with the event that is raised by
    ' the cust object.
    AddHandler cust.UpdateComplete, AddressOf HandleUpdateComplete
    ' Set the CustomerName Property
    cust.CustomerName = "Fred"
    ' Retrieve and display the CustomerName property.
    MsgBox("Customer name is: " & cust.CustomerName)
    ' Call the UpdateCustomerStatus procedure, which raises the
    ' UpdateComplete event.
    cust.UpdateCustomerStatus()
End Sub

Sub HandleUpdateComplete()
    ' This is the event handler for the UpdateComplete event.
    MsgBox("Update is complete.")
End Sub

Confira também