Полиморфизм на основе интерфейсов
Обновлен: Ноябрь 2007
Интерфейсы — это еще один способ использования полиморфизма в Visual Basic. Интерфейсы описывают свойства и методы так же, как классы, но, в отличие от классов, интерфейсы не содержат их реализацию. Преимущество интерфейсов состоит в том, что они позволяют системам программных компонентов развиваться, не нарушая структуру существующего кода.
Для реализации полиморфизма при помощи интерфейсов нужно по-разному реализовать интерфейс в разных классах. Клиентские приложения могут одинаковым образом использовать старые и новые реализации. Преимуществом полиморфизма, основанного на использовании интерфейсов, является отсутствие необходимости заново компилировать существующие клиентские приложения, чтобы заставить их работать с новыми реализациями интерфейсов.
В следующем примере объявляется интерфейс Shape2, реализуемый классами RightTriangleClass2 и RectangleClass2. Процедура ProcessShape2 вызывает метод CalculateArea экземпляра RightTriangleClass2 или 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
См. также
Задачи
Практическое руководство. Создание и реализация интерфейсов