Partilhar via


Interface-Based polimorfismo

As interfaces oferecem outra maneira, que você pode realizar polimorfismo em Visual Basic. Interfaces descrevem propriedades e métodos, como classes, mas, diferentemente das classes, interfaces não podem fornecer qualquer implementação.Várias interfaces tem a vantagem de permitir que sistemas de componentes de software evoluam sem quebra código existente.

Para obter o polimorfismo com interfaces, implementar uma interface de formas diferentes em várias classes.Aplicativos cliente podem usar as antigas ou novas implementações da mesma maneira.A vantagem baseada em interface polimorfismo é que você não precisa re-compilar aplicativos existentes do cliente para obtê-los para trabalhar com novas implementações de interface.

O exemplo a seguir define uma interface denominada Shape2 que é implementado em uma classe chamada RightTriangleClass2 e RectangleClass2. Um procedimento denominado ProcessShape2 chamadas a CalculateArea método de instâncias RightTriangleClass2 ou RectangleClass2:

Sub TestInterface()
    Dim RectangleObject2 As New RectangleClass2
    Dim RightTriangleObject2 As New RightTriangleClass2
    ProcessShape2(RightTriangleObject2, 3, 14)
    ProcessShape2(RectangleObject2, 3, 5)
End Sub

Sub ProcessShape2(ByVal Shape2 As Shape2, ByVal X As Double, _
      ByVal Y As Double)
    MsgBox("The area of the object is " _
       & Shape2.CalculateArea(X, Y))
End Sub

Public Interface Shape2
    Function CalculateArea(ByVal X As Double, ByVal Y As Double) As Double
End Interface

Public Class RightTriangleClass2
    Implements Shape2
    Function CalculateArea(ByVal X As Double, _
          ByVal Y As Double) As Double Implements Shape2.CalculateArea
        ' Calculate the area of a right triangle. 
        Return 0.5 * (X * Y)
    End Function
End Class

Public Class RectangleClass2
    Implements Shape2
    Function CalculateArea(ByVal X As Double, _
          ByVal Y As Double) As Double Implements Shape2.CalculateArea
        ' Calculate the area of a rectangle. 
        Return X * Y
    End Function
End Class

Consulte também

Tarefas

Como: Criar e implementar interfaces

Conceitos

Herança-Based polimorfismo