An element of coding where you define a common set of properties and methods for use with the design of two or more classes.
Both interfaces and abstract classes are types of abstraction. With interfaces, like abstract classes, you cannot provide any implementation. However, unlike abstract classes, interfaces are not based on inheritance. You can apply an Interface to any class in your class tree. In a real sense, interfaces are a technique for designing horizontally in a class hierarchy (as opposed to inheritance where you design vertically). Using interfaces in your class design allows your system to evolve without breaking existing code.
VB.Net Interfaces
With VB.Net you define an interface with the Interface keyword and use it in a class with the Implements keyword. In the resulting class, you implement each property and method and add Implements Interface.Object to each as in:
Sub Speak(ByVal pSentence As String) Implements IHuman.Speak
MessageBox.Show(pSentence)
End Sub
Syntax Example: Public Interface IHuman
'Specify interface methods and properties here.
End Interface
Public Class Cyborg
Inherits System.Object
End Class
Public Class CyborgHuman
Inherits Cyborg
Implements IHuman
'Implement interface methods and properties here.
End Class
VB.Net 2008 Working WinForms Example
The following example demonstrates implementing a very simple interface. The interface is named IHuman which includes one property and one method. Our resulting class is named CyborgHuman and, for clarity, our CyborgHuman class also inherits from a class called Cyborg.
Create a form and place a button on it and alter the code as follows:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim MyRobot As New CyborgHuman
MyRobot.HumanName = "Nicole"
MyRobot.Speak("Hi, my name is " & MyRobot.HumanName & ".")
End Sub
End Class
'Notice you do not specify visibility in an interface.
'Visibility is determined by the implementing class.
Public Interface IHuman
Property HumanName()
Sub Speak(ByVal pSentence As String)
End Interface
Public Class Cyborg
Inherits System.Object
End Class
Public Class CyborgHuman
Inherits Cyborg
Implements IHuman
Private FHumanName As String
Public Property HumanName() Implements IHuman.HumanName
Get
Return FHumanName
End Get
Set(ByVal value)
FHumanName = value
End Set
End Property
Sub Speak(ByVal pSentence As String) Implements IHuman.Speak
MessageBox.Show(pSentence)
End Sub
End Class
Default Interface Visibility: Friend
If you do not specify an interfaces visibility, the default is Friend (accessible from types in the same assembly) but an interface's members are always public -- which makes sense but is noteworthy.
Interface ITalk //Default visibility is Internal.
'...
End Interface