Freigeben über


Auf Schnittstellen basierender Polymorphismus

Aktualisiert: November 2007

Schnittstellen bieten eine weitere Möglichkeit, Polymorphismus in Visual Basic zu erzielen. Durch Schnittstellen werden die Eigenschaften und Methoden von Klassen beschrieben. Im Gegensatz zu Klassen bieten Schnittstellen jedoch keine Implementierungen. Mehrfache Schnittstellen haben den Vorteil, dass Systeme von Softwarekomponenten sich entwickeln können, ohne den vorhandenen Code zu unterbrechen.

Wenn Sie Polymorphismus durch Schnittstellen erzielen möchten, implementieren Sie eine Schnittstelle auf verschiedene Weisen in mehreren Klassen. Clientanwendungen können entweder die alten oder die neuen Implementierungen auf die gleiche Weise verwenden. Der Vorteil des auf Schnittstellen basierenden Polymorphismus liegt darin, dass Sie vorhandene Clientanwendungen nicht erneut kompilieren müssen, damit sie mit neuen Schnittstellenimplementierungen funktionieren.

Im folgenden Beispiel wird die Schnittstelle Shape2 definiert, die in der Klasse RightTriangleClass2 und RectangleClass2 implementiert wird. Die Prozedur ProcessShape2 ruft die CalculateArea-Methode der Instanzen von RightTriangleClass2 oder RectangleClass2 auf:

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

Siehe auch

Aufgaben

Gewusst wie: Erstellen und Implementieren von Schnittstellen

Konzepte

Auf Vererbung basierender Polymorphismus