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