"Hallo, Amigo! Ik ga je iets vertellen over method overloading ."

"Je kunt ze ook overbelasten?! Wat een dag!"

"Je kunt er veel mee doen, maar daar gaan we nu niet op in."

"Het is een afspraak."

"Overbelasting is een heel eenvoudige bewerking. Eigenlijk is het niet eens een bewerking op methoden, hoewel er soms naar wordt verwezen met een angstaanjagende naam: parametrisch polymorfisme ."

Wat u moet onthouden, is dat elke methode in een klasse een unieke naam moet hebben.

"Ja ik weet het."

"Nou, dat is niet helemaal waar. Ik bedoel, het is helemaal niet waar. Een methode hoeft geen unieke naam te hebben. Wat uniek moet zijn, is de combinatie van een methodenaam en de soorten parameters. Deze combinatie is ook bekend als een methodehandtekening."

Code Opmerkingen
public void print();
public void print2();
Dit is toegestaan. De twee methoden hebben unieke namen.
public void print();
public void print(int n);
En ook dit is toegestaan. De twee methoden hebben unieke namen (handtekeningen).
public void print(int n, int n2);
public void print(int n);
De methodenamen zijn hier nog steeds uniek.
public int print(int a);
public void print(int n);
Maar dit is niet toegestaan. De methoden zijn niet uniek, ook al worden er verschillende typen doorgegeven.
public int print(int a, long b);
public long print(long b, int a);
Maar dit is toegestaan. De methodeparameters zijn uniek.

"Dat heb ik al ergens gezien."

"Ja. Als je " System.out.println " typt, stelt IntelliJ IDEA een paar dozijn versies van afdrukmethoden voor die verschillende parameters gebruiken. De compiler identificeert eenvoudig de vereiste methode en roept deze vervolgens aan op basis van de typen parameters die je doorgeeft."

'Dat is niet zo moeilijk. Maar het is geen polymorfisme.'

"Of beter gezegd, het is geen overheersende methode."

Overigens wil ik erop wijzen dat de parameternamen niet relevant zijn. Ze gaan verloren tijdens het compileren. Zodra aan een methode is voldaan, zijn alleen de naam en parametertypen bekend.