homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

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

20.2. Constructoren van Abstracte Basis Klassen

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Ondanks dat we geen objecten kunnen instantiëren van het abstracte type, kan het toch nuttig zijn een constructor op te nemen in deze klassen.

De reden hiervoor is dezelfde zoals bij concrete klassen, namelijk de mogelijkheid in deze constructiecode op te nemen.

De Figure klasse zou bijvoorbeeld een constructor kunnen gebruiken om af te dwingen dat een initiële Color waarde wordt bepaald bij het creëren van een figuur.
Visual Basic 2010 Broncode
MustInherit Class Figure
    Private m_Color As String
    Public Property Color() As String
        Get
            Color = m_Color
        End Get
        Set(ByVal value As String)
            m_Color = value
        End Set
    End Property
    Protected Sub New(ByVal color As String)
        Me.Color = color
    End Sub
End Class
Class Rectangle : Inherits Figure
    Private m_Height As Double
    Public Property Height() As Double
        Get
            Height = m_Height
        End Get
        Set(ByVal value As Double)
            m_Height = value
        End Set
    End Property
    Private m_Width As Double
    Public Property Width() As Double
        Get
            Width = m_Width
        End Get
        Set(ByVal value As Double)
            m_Width = value
        End Set
    End Property
    Public Sub New(ByVal color As String, _
                   ByVal height As Double, ByVal width As Double)
        MyBase.New(color)
        Me.Height = height
        Me.Width = width
    End Sub
End Class
Class Circle : Inherits Figure
    Private m_Radius As Double
    Public Property Radius() As Double
        Get
            Radius = m_Radius
        End Get
        Set(ByVal value As Double)
            m_Radius = value
        End Set
    End Property
    Public Sub New(ByVal color As String, _
                   ByVal radius As Double)
        MyBase.New(color)
        Me.Radius = radius
    End Sub
End Class
Class Example
    Public Shared Sub Main()
        Dim rectangle1 As Rectangle = New Rectangle("red", 10, 20)
        Dim circle1 As Circle = New Circle("yellow", 15)
    End Sub
End Class
De constructor van een abstracte klasse kan zelfs de Public access modifier krijgen.  Doe dit echter niet, dit werkt louter verwarrend omdat Public gebruikt wordt om aan te geven dat de member in de publieke interface van dat type zit en de member dus aanroepbaar is voor clients van dat type.
Maar bij een abstracte klasse met een Public constructor blijft het onmogelijk een object van dit type te instantiëren.

Protected is een veel meer voor de hand liggende keuze.  Een Protected member kan worden aangeroepen door de afgeleide klassen, dus kan hierbij ook de overgeërfde initialisatiecode van de constructor van die abstracte basis klasse aangeroepen worden ( en herbruikt worden ) in de afgeleide klassen.

Dit artikel is gepubliceerd op zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.