Een constructor is een speciaal type methode die wordt gebruikt om een nieuw object van een klasse te -=INITIALISEREN=-. Constructor overloading betekent dat een klasse meerdere constructors kan hebben met verschillende parameterlijsten. Dit stelt ontwikkelaars in staat om objecten op verschillende manieren te initialiseren.
Casus
Stel je bouwt een auto in een programma. Door constructor overloading te gebruiken, kun je zowel een auto met volledige gegevens (merk, model, bouwjaar) als een auto met alleen een merk en model initialiseren.
Hoe zit constructor overloading in elkaar?
Een constructor heeft dezelfde naam als de klasse waarin deze zich bevindt en heeft geen return-type, zelfs geen void. constructor overloading wordt bereikt door meerdere constructors te definiëren met verschillende parameters. Hierdoor kan een object met verschillende initiële waarden worden aangemaakt.
Deze code definieert een klasse genaamd Auto, die drie eigenschappen (Merk, Model en Bouwjaar) heeft om informatie over een auto op te slaan. De klasse bevat meerdere constructors die de eigenschappen op verschillende manieren kunnen initialiseren.
Codevoorbeeld
public class Auto{ public string Merk { get; set; } public string Model { get; set; } public int Bouwjaar { get; set; } // Constructor met drie parameters public Auto(string merk, string model, int bouwjaar) { Merk = merk; Model = model; Bouwjaar = bouwjaar; } // Constructor met twee parameters public Auto(string merk, string model) { Merk = merk; Model = model; Bouwjaar = DateTime.Now.Year; // Standaardwaarde } // Constructor zonder parameters public Auto() { Merk = "Onbekend"; Model = "Onbekend"; Bouwjaar = DateTime.Now.Year; }}
Hoe gebruik je constructor overloading?
Constructor overloading stelt je in staat om meerdere constructors met verschillende parameterlijsten te definiëren. Dit kan van toepassing zijn in het geval dat er een standaard waarde gegeven moet worden bij het initialiseren van een klasse. Op deze manier kan er gekozen worden om zowel een constructor te maken zonder parameterlijst voor de standaard waarden en een constructor waar afwijkingen van deze waarden kan worden aangegeven.
Casus
Stel je maakt een applicatie waarin je verschillende soorten meubels wilt beheren. Met behulp van constructor overloading kun je meubels aanmaken met volledige gegevens of alleen met een naam.
In deze casus wordt constructor overloading gebruikt om objecten van de klasse Meubel op verschillende manieren te initialiseren.
De parameterloze constructor stelt standaardwaarden in voor Naam, Materiaal en Prijs.
De tweede constructor initialiseert alleen de naam en het materiaal van het meubel, terwijl de prijs standaard op 0.0m blijft.
De derde constructor maakt het mogelijk om alle eigenschappen van een Meubel direct bij creatie te specificeren.
Dit maakt de klasse flexibel en bruikbaar in verschillende scenario’s, afhankelijk van hoeveel informatie beschikbaar is bij het aanmaken van een object.
Mogelijke uitwerking van de casus
public class Meubel{ public string Naam { get; set; } public string Materiaal { get; set; } public decimal Prijs { get; set; } // Volledige constructor public Meubel(string naam, string materiaal, decimal prijs) { Naam = naam; Materiaal = materiaal; Prijs = prijs; } // Constructor met alleen naam en materiaal public Meubel(string naam, string materiaal) { Naam = naam; Materiaal = materiaal; Prijs = 0m; // Standaardwaarde } // Constructor zonder parameters public Meubel() { Naam = "Onbekend"; Materiaal = "Onbekend"; Prijs = 0m; }}// GebruikMeubel stoel = new Meubel("Stoel", "Hout", 49.99m);Meubel tafel = new Meubel("Tafel", "Metaal");Meubel onbekend = new Meubel();