Metode overbelastning
Vårt nye og interessante tema for i dag er metodeoverbelastning . Vær forsiktig – metodeoverbelastning må ikke forveksles med metodeoverstyring.
I motsetning til overstyring er overbelastning en veldig enkel operasjon. Det er faktisk ikke en operasjon på metoder, selv om det noen ganger refereres til med den forferdelige termen parametrisk polymorfisme .
Problemet her er at alle metoder i en klasse må ha unike navn. Vel, det er ikke helt nøyaktig. Vel, mer nøyaktig, det er ikke nøyaktig i det hele tatt. Metodenavnet trenger ikke å være unikt. Det som må være unikt er foreningen av metodenavnet og typene av metodens parametere. Denne foreningen er kjent som metodesignaturen
Eksempler:
Kode | Beskrivelse |
---|---|
|
Dette er tillatt. De to metodene har unike navn. |
|
Og også dette. De to metodene har unike navn (signaturer). |
|
Metodene er fortsatt unike |
|
Men dette er ikke tillatt . Metodene er ikke unike . Selv om de returnerer forskjellige typer. |
|
Men du kan gjøre dette . Metodeparametere er unike |
Signaturen inkluderer metodenavnet og parametertypene . Den inkluderer ikke metodens returtype og parameternavn . En klasse kan ikke ha to metoder med samme signaturer - kompilatoren vil ikke vite hvilken som skal kalles.
Parameternavnene spiller ingen rolle , siden de blir borte under kompilering. Når en metode er kompilert, er bare navnet og parametertypene kjent. Returtypen går ikke tapt, men metodens resultat må ikke tilordnes noe, så det er heller ikke inkludert i signaturen.
I følge OOP- prinsipper skjuler polymorfisme forskjellige implementeringer bak et enkelt grensesnitt. Når vi kaller System.out.println()
metoden, for eksempel, kalles ulike metoder avhengig av hvilke argumenter som sendes. Dette er polymorfisme i aksjon.
Det er derfor forskjellige metoder med identiske navn inneholdt i samme klasse anses å være en svak form for polymorfisme.
GO TO FULL VERSION