Polimorfismo basado en la interfaz

Actualización: noviembre 2007

Las interfaces proporcionan otro método de conseguir el polimorfismo en Visual Basic. Las interfaces describen propiedades y métodos como clases, pero a diferencia de éstas, no pueden proporcionar ninguna implementación. Las interfaces múltiples tienen la ventaja de permitir la evolución de los sistemas de componentes de software sin interrumpir el código existente.

Para conseguir el polimorfismo con interfaces, se implementa una interfaz de diferentes formas en varias clases distintas. Las aplicaciones cliente pueden utilizar la implementación nueva o la antigua, exactamente de la misma manera. La ventaja del polimorfismo basado en interfaz es que no es necesario volver a compilar aplicaciones cliente existentes para que funcionen con nuevas implementaciones de interfaz.

El siguiente ejemplo define una interfaz denominada Shape2 que se implementa en una clase denominada RightTriangleClass2 y RectangleClass2. Un método denominado ProcessShape2 llama al método de instancias CalculateArea de RightTriangleClass2 o 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

Vea también

Tareas

Cómo: Crear e implementar interfaces

Conceptos

Polimorfismo basado en la herencia