Sobes.tech
Junior

Wat kan er worden gewijzigd bij het overschrijven van methoden in programmeren?

sobes.tech AI

Antwoord van AI

Bij method overloading kan men wijzigen:

  • Aantal parameters: Methoden met dezelfde naam kunnen een verschillend aantal formele parameters hebben.
  • Types van parameters: Methoden met dezelfde naam en hetzelfde aantal parameters kunnen verschillen in de types van deze parameters.
  • Volgorde van parameter types: Als methoden hetzelfde aantal parameters en dezelfde types hebben, maar in een andere volgorde, wordt dit ook als overloading beschouwd.

Voorbeeld in Java:

// Klasse met overloaded methoden
class Calculator {

    // Methode voor optelling van twee gehele getallen
    public int add(int a, int b) {
        return a + b;
    }

    // Overloaded methode: optelling van drie gehele getallen
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Overloaded methode: optelling van twee kommagetallen
    public double add(double a, double b) {
        return a + b;
    }

    // Overloaded methode: optelling van een geheel getal en een kommagetal
    public double add(int a, double b) {
        return a + b;
    }

    // Overloaded methode: optelling van een kommagetal en een geheel getal
    public double add(double a, int b) {
        return a + b;
    }
}

Wat niet gewijzigd kan worden bij method overloading:

  • Returntype: Twee methoden met dezelfde naam en dezelfde handtekening (aantal, types en volgorde van parameters) kunnen alleen verschillen in returntype.
  • Toegangsmodifiers: Toegangsmodifiers (public, private, protected, default) beïnvloeden overloading niet.
  • Aanwezigheid of afwezigheid van het static-woord: Je kunt geen statische methode overloaden door een niet-statische methode met dezelfde handtekening te definiëren, of vice versa.
  • Lijst van exceptions: De lijst van exceptions die een methode kan gooien, maakt geen deel uit van de handtekening en wordt niet gebruikt door de compiler om overloaded methoden te onderscheiden.

Vergelijking tussen overloading en overriding:

Kenmerk Overloading Overriding
Waar gebeurt het In dezelfde klasse of in een klassehiërarchie In een subclass
Methodenaam Zelfde Zelfde
Methodesignature Verschillend (aantal, types, volgorde van parameters) Zelfde
Returntype Kan verschillen (maar niet het enige verschil) Moet hetzelfde of covariant (voor objecten)
Doel Verschillende varianten van één actie bieden voor verschillende datatypes of argumentaantallen Het gedrag van een geërfde methode in de subclass wijzigen
Relatie tussen methoden Onafhankelijke methoden "Is een"-relatie (erfenis)
Polymorfisme Polymorfisme op compileertijd (statisch) Polymorfisme op runtime (dynamisch)