O'Reilly logo

Object-Oriented Programming with Visual Basic .NET by J.P. Hamilton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

5.3. Interfaces Versus Abstract Base Classes

Interfaces provide all the benefits of polymorphism. You can code against an interface much like you can code an abstract base class:

Dim superSport As New Car( )
.
.
.
PaintSomeStuff(superSport)
.
.
.
Public Sub PaintSomeStuff(someThing As IPaintable)
    someThing.Paint( )
End Sub

So what is the difference between an interface and an abstract base class? When should you use one over the other?

If you are describing an is-a relationship, you can use an abstract base class. An interface, on the other hand, usually describes a service or facility that can be used across a wide variety of objects. For instance, House, Car, and Fence are three very different classes, but each could implement IPaintable and handle the painting process in a manner specific to its needs.

This describes a typical scenario and is a pretty good guideline to follow, but it is by no means set in stone. Just because an is-a relationship is described doesn't mean you can't use an interface in place of an abstract base class. If there is no implementation in the base class, there is no reason not to use an interface instead. The Payment class you have already seen could easily be rewritten as an interface:

Public Interface IPayment
    Function Authorize(amount As Decimal) As Boolean
    Function Bill( ) As Boolean
    Function Credit( ) As Boolean
End Interface

One advantage of using interfaces is that the number a class can implement is unlimited (in theory). You can implement ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required