To use this website fully, you first need to accept the use of cookies. By agreeing to the use of cookies you consent to the user of functional cookies. For more information read this page.

Interfaces and implementation

Interfaces

An interface is a boundary between two objects. In programming terms this means that an object can follow a set of rules.

An interface can be seen as very similar to an abstract class in that it specifies rules, but unlike an abstract class it cannot have any methods specified.

An interface is like a class with the rules that all classes that use it must include and given functionality to. The Interface keyword is used to declare an interface.

VB.NET
Interface Game

	Sub InitiateGame()
	Sub SaveGame()

End Interface
		

The interface specifies nothing about what the program does, but it specifies how it should be implemented.

Implementation

An interface needs to be used using an implementation, the class that contains the interface cannot be used on its own. This is done using the Implements keyword in a similar fashion to Inherits being used with a class.

VB.NET
Public Class DragonGame
	Implements Game

	Sub InitiateGame() Implements Game.InitiateGame
		'Place code to run game here
	End Sub

	Sub SaveGame() Implements Game.SaveGame
		'Place code to save game here
	End Sub
End Class
		

This class can now be used as one that falls into the type of class required as a Game.

Why interfaces are useful

Interfaces may just seem like worse versions of abstract classes, but as a matter of fact they are actually more interesting than that.

The difference however is that a class can implement more than one interface and be accepted as any of such interfaces. With inheritance, a class may only inherit one class.

The following sample taken from this website tests an interface called interface against the Game interface and if it finds that it implements the Game interface it will run the InitiateGame method.

VB.NET
If GetType(interface).IsAssignableFrom(Game) Then
	'Start the game
	CType(MyObject, IMyInterface).InitiateGame()
End If
		

This article on CodeProject has more on the differences between abstract classes and interfaces.