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) |