"Hei, Amigo! Jeg skal fortelle deg om metodeoverbelastning ."

"Du kan overbelaste dem også?! For en dag!"

"Du kan gjøre mye med dem, men vi vil ikke gå inn på det akkurat nå."

"Det er en avtale."

"Overbelastning er en veldig enkel operasjon. Faktisk er det ikke engang en operasjon på metoder, selv om det noen ganger refereres til med et skremmende navn: parametrisk polymorfisme ."

Det du må huske er at hver metode i en klasse må ha et unikt navn.

"Ja jeg vet."

"Vel, det er ikke helt sant. Jeg mener, det er slett ikke sant. En metode trenger ikke å ha et unikt navn. Det som må være unikt er kombinasjonen av et metodenavn og typene av dets parametere . Denne kombinasjonen er også kjent som en metodesignatur."

Kode Kommentarer
public void print();
public void print2();
Dette er tillatt. De to metodene har unike navn.
public void print();
public void print(int n);
Og dette er også lov. De to metodene har unike navn (signaturer).
public void print(int n, int n2);
public void print(int n);
Metodenavnene er fortsatt unike her.
public int print(int a);
public void print(int n);
Men dette er ikke tillatt. Metodene er ikke unike, selv om ulike typer passeres.
public int print(int a, long b);
public long print(long b, int a);
Men dette er lov. Metodeparametrene er unike.

"Jeg har allerede sett det et sted."

"Jepp. Når du skriver " System.out.println ", foreslår IntelliJ IDEA et par dusin versjoner av utskriftsmetoder som bruker forskjellige parametere. Kompilatoren identifiserer og kaller deretter den nødvendige metoden basert på typene av parametere du sender."

"Det er ikke så vanskelig. Men det er ikke polymorfisme."

"Eller mer nøyaktig, det er ikke metodeoverstyring."

Jeg vil forresten påpeke at parameternavnene er irrelevante. De går tapt under kompilering. Når en metode er overholdt, er bare navnet og parametertypene kjent.