Partager via


Polymorphisme d'interface

Mise à jour : novembre 2007

Les interfaces vous permettent également d'accomplir le polymorphisme dans Visual Basic. Elles décrivent des propriétés et des méthodes, telles que des classes, mais contrairement aux classes, elles ne peuvent pas assurer d'implémentation. Les interfaces multiples permettent l'évolution des systèmes de composants logiciels sans endommager le code existant.

Pour accomplir le polymorphisme avec les interfaces, vous devez implémenter une interface de diverses manières dans plusieurs classes. Les applications clientes peuvent employer les implémentations nouvelles ou anciennes exactement de la même façon. L'avantage du polymorphisme d'interface est que vous n'avez pas besoin de recompiler les applications clientes existantes pour les utiliser avec les nouvelles implémentations d'interface.

L'exemple suivant définit une interface intitulée Shape2 implémentée dans une classe nommée RightTriangleClass2 et RectangleClass2. Une procédure nommée ProcessShape2 appelle la méthode CalculateArea des instances de 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

Voir aussi

Tâches

Comment : créer et implémenter des interfaces

Concepts

Polymorphisme d'héritage