Интерфейсы в основном позволяют определять контракт типа без указания его реализации.
Идея состоит в том, что если вы знаете, что данный тип реализует определенный интерфейс, это гарантирует, что определенные методы и свойства являются членами этого типа.
Так что любой тип, который реализует следующий интерфейс:
Interface ISpinnable
Sub Spin()
End Interface
Должен быть реализован метод Spin
. Но вызывающий объект этого типа, который реализует ISpinnable
, не заботится о , как это реализовано, он просто заботится о том, чтобы метод был там. Вот тип, который реализует ISpinnable
:
Class Top Implements ISpinnable
Sub Spin()
' do spinning stuff
End Sub
End Class
Преимущество этого заключается в том, что вы можете создавать аргументы метода типа ISpinner
и позволять вызывающей стороне этих методов передавать вам любой тип, пока он реализует интерфейс. Ваш метод больше не связан с конкретным типом, который использует вызывающая сторона.