Title here
Summary here
Interfaces are named collections of method signatures.
Imports System
' Here's a basic interface for geometric shapes.
Public Interface IGeometry
    Function Area() As Double
    Function Perim() As Double
End Interface
' For our example we'll implement this interface on
' Rectangle and Circle types.
Public Class Rectangle
    Implements IGeometry
    Public Property Width As Double
    Public Property Height As Double
    ' To implement an interface in VB.NET, we need to
    ' implement all the methods in the interface.
    Public Function Area() As Double Implements IGeometry.Area
        Return Width * Height
    End Function
    Public Function Perim() As Double Implements IGeometry.Perim
        Return 2 * Width + 2 * Height
    End Function
End Class
Public Class Circle
    Implements IGeometry
    Public Property Radius As Double
    ' The implementation for Circle.
    Public Function Area() As Double Implements IGeometry.Area
        Return Math.PI * Radius * Radius
    End Function
    Public Function Perim() As Double Implements IGeometry.Perim
        Return 2 * Math.PI * Radius
    End Function
End Class
Public Module Program
    ' If a variable has an interface type, then we can call
    ' methods that are in the named interface. Here's a
    ' generic Measure function taking advantage of this
    ' to work on any IGeometry.
    Sub Measure(g As IGeometry)
        Console.WriteLine(g)
        Console.WriteLine(g.Area())
        Console.WriteLine(g.Perim())
    End Sub
    Sub Main()
        Dim r As New Rectangle With {.Width = 3, .Height = 4}
        Dim c As New Circle With {.Radius = 5}
        ' The Circle and Rectangle types both
        ' implement the IGeometry interface so we can use
        ' instances of these types as arguments to Measure.
        Measure(r)
        Measure(c)
    End Sub
End ModuleTo run the program, save it as Interfaces.vb and compile it using the VB.NET compiler:
$ vbc Interfaces.vb
$ Interfaces.exe
Rectangle
12
14
Circle
78.5398163397448
31.4159265358979This example demonstrates how interfaces work in Visual Basic .NET. Interfaces define a contract that classes must adhere to, allowing for polymorphism and more flexible code design. The IGeometry interface is implemented by both Rectangle and Circle classes, enabling them to be used interchangeably where an IGeometry type is expected.