Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

20.1. Abstracte Basis Klassen - MustInherit

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Van klassen die met het MustInherit keyword zijn gemarkeerd is overerving als het ware verplicht.  "Verplicht" is het in de zin dat je geen instantie kan creëren van dergelijke abstracte klasse, maar je slecht iets kan doen met de members van die abstracte klasse indien je van die klasse gaat overerven.  Het is enkel mogelijk om instanties te creëren van concreet (dus niet abstracte) afgeleide types van dit abstracte type.

Dergelijke constructie is dus nuttig in geval van een generalisatietype die zelf een eerder abstract concept omschrijft waarvan zelf geen objecten gemaakt moeten worden.  Het zal uiteraard enkel nuttig zijn wanneer men beschikt over een concreet afgeleid type.

In een systeem hebben we bijvoorbeeld nood aan figuren als rechthoeken en cirkels.  Alle soorten van figuren hebben een bepaalde kleur.  Een generalisatietype als Figure met de gemeenschappelijke kenmerken (zoals Color) en gemeenschappelijk gedrag voor alle figuren zou hier dus nuttig zijn.
Maar omdat er in ons systeem niet zoiets is als "een gewone figuur", maar het altijd om specifieke soorten van figuren gaat, kunnen we beter de Figure klasse abstract (MustInherit) maken.  Dit voorkomt dat we in een client objecten van dit type zouden maken.  Onderstaande regel (1) kan dus niet en zou een compileerfout veroorzaken.
Visual Basic 2012 Broncode - Codevoorbeeld 444
MustInherit Class Figure
    Public Property Color As String
End Class
Class Rectangle : Inherits Figure
    Public Property Height As Double
    Public Property Width As Double
End Class
Class Circle : Inherits Figure
    Public Property Radius As Double
End Class
Class Example
    Public Shared Sub Main()
        Dim rectangle1 As Rectangle = New Rectangle
        Dim circle1 As Circle = New Circle
        'Dim figure1 As Figure = New Figure                                ' (1)
    End Sub
End Class
Aan de overgeërfde eigenschap Color kunnen in de gespecialiseerde types nog gespecialiseerde eigenschappen als Height, Width of Radius bijvoorbeeld worden toegevoegd.

Abstracte klassen kunnen ook worden overgeërfd door andere abstracte klassen.  Maar ook met deze afgeleide abstracte klassen zul je weinig zijn zolang je daarvan geen concrete klassen laat overerven.
Een klasse die niet geïnstantieerd kan worden is uiteraard slechts nuttig door de members ervan over te nemen in een concreet afgeleid type waarvan je wel een instantie kunt creëren.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.