Поделиться через


Оператор Implements

Указывает один или несколько интерфейсов или элементов интерфейса, которые должны быть реализованы в определении класса или структуры, в котором она отображается.

Синтаксис

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

Детали

interfacename
Обязательный. Интерфейс, свойства, процедуры и события которого реализуются соответствующими членами класса или структуры.

interfacemember
Обязательный. Член реализуемого интерфейса.

Замечания

Интерфейс представляет собой коллекцию прототипов, представляющих элементы (свойства, процедуры и события), инкапсулирует интерфейс. Интерфейсы содержат только объявления для членов; классы и структуры реализуют эти элементы. Дополнительные сведения см. в статье Интерфейсы.

Оператор Implements должен немедленно следовать инструкции или Structure инструкцииClass.

При реализации интерфейса необходимо реализовать все члены, объявленные в интерфейсе. Опущение любого члена считается синтаксической ошибкой. Чтобы реализовать отдельный элемент, необходимо указать ключевое слово Реализации (отдельно от Implements инструкции) при объявлении элемента в классе или структуре. Дополнительные сведения см. в статье Интерфейсы.

Классы могут использовать частные реализации свойств и процедур, но эти члены доступны только путем приведения экземпляра класса реализации в переменную, объявленную типом интерфейса.

Пример 1

В следующем примере показано, как использовать инструкцию Implements для реализации элементов интерфейса. Он определяет интерфейс с именем ICustomerInfo события, свойства и процедуры. Класс customerInfo реализует все члены, определенные в интерфейсе.

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

Обратите внимание, что класс customerInfo использует Implements инструкцию в отдельной строке исходного ICustomerInfo кода, чтобы указать, что класс реализует все члены интерфейса. Затем каждый член класса использует Implements ключевое слово в рамках объявления члена, чтобы указать, что он реализует этот элемент интерфейса.

Пример 2

В следующих двух процедурах показано, как можно использовать интерфейс, реализованный в предыдущем примере. Чтобы протестировать реализацию, добавьте эти процедуры в проект и вызовите процедуру 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

См. также