"Hej, Amigo! Jeg vil fortælle dig om metodeoverbelastning ."

"Du kan også overbelaste dem?! Hvilken dag!"

"Man kan gøre meget med dem, men det kommer vi ikke ind på lige nu."

"Det er en aftale."

"Overbelastning er en meget simpel operation. Faktisk er det ikke engang en operation på metoder, selvom det nogle gange omtales med et skræmmende navn: parametrisk polymorfi ."

Det du skal huske er, at hver metode i en klasse skal have et unikt navn.

"Ja det ved jeg godt."

"Jamen, det er ikke helt sandt. Jeg mener, det er slet ikke sandt. En metode behøver ikke at have et unikt navn. Det, der skal være unikt, er kombinationen af ​​et metodenavn og typerne af dets parametre . Denne kombination er også kendt som en metodesignatur."

Kode Kommentarer
public void print();
public void print2();
Dette er tilladt. De to metoder har unikke navne.
public void print();
public void print(int n);
Og det er også tilladt. De to metoder har unikke navne (signaturer).
public void print(int n, int n2);
public void print(int n);
Metodenavnene er stadig unikke her.
public int print(int a);
public void print(int n);
Men dette er ikke tilladt. Metoderne er ikke unikke, selvom forskellige typer bliver bestået.
public int print(int a, long b);
public long print(long b, int a);
Men dette er tilladt. Metodeparametrene er unikke.

"Jeg har allerede set det et sted."

"Jep. Når du skriver " System.out.println ", foreslår IntelliJ IDEA et par dusin versioner af printmetoder , der bruger forskellige parametre. Compileren identificerer simpelthen og kalder derefter den påkrævede metode baseret på typen af ​​de parametre, du sender."

"Det er ikke så svært. Men det er ikke polymorfi."

"Eller mere præcist, det er ikke metode tilsidesættende."

Jeg vil i øvrigt påpege, at parameternavnene er irrelevante. De går tabt under kompilering. Når først en metode er overholdt, er kun dens navn og parametertyper kendt.