Wat is constructor overloading?

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;
    }
}
 
// Gebruik
Meubel stoel = new Meubel("Stoel", "Hout", 49.99m);
Meubel tafel = new Meubel("Tafel", "Metaal");
Meubel onbekend = new Meubel();

Volgende stap: Oefeningen Constructor Overloading