Metodeoverbelastning og tilsidesættelse er de to måder, hvorpå Java demonstrerer polymorfisme. Polymorfisme kommer fra en kombination af to græske ord: "poly" betyder mange og "morph" betyder form. Derfor muliggør polymorfisme metoder til at antage mange former.

Følg denne vejledning for at lære at overbelaste eller tilsidesætte metoder i Java.

Hvad er metodeoverbelastning?

"Metodeoverbelastning" refererer til at definere forskellige metoder i en klasse med samme navn. Metoderne skal have forskellige underskrifter. En metodesignatur er kombinationen af ​​en metodes navn og parameterliste. Det inkluderer ikke returtypen.

Compileren ved, hvilken metode der skal bruges ved at kontrollere typen, antallet af parametre og rækkefølgen, de placeres i.

Relaterede: Udforskning af arv på Java-programmeringssprog

Metodeoverbelastning demonstrerer polymorfisme under kompileringstid. Kompileringstidspolymorfisme betyder, at Java-kompilatoren binder et objekt til dets funktionalitet ved kørselstid. Compileren kontrollerer metodesignaturer for at opnå dette.

instagram viewer

Denne type polymorfisme er også kendt som statisk eller tidlig binding.

Se eksemplet på metodeoverbelastning nedenfor:

klasse Aritmetik {
int-terning (int x) {
returnere x * x * x;
}
dobbelt terning (dobbelt x) {
returnere x * x * x;
}
float terning (float x) {
returnere x * x * x;
}
offentlig statisk ugyldig hoved (String [] args) {
Aritmetik myMultiplication = ny aritmetik ();
System.out.println ("Kuben af ​​5 er" + myMultiplication.cube (5));
System.out.println ("Kuben på 5.0 er" + myMultiplication.cube (5.0));
System.out.println ("Kuben på 0,5 er" + myMultiplication.cube (0.5));
}
}

Produktion:

Terningen på 5 er 125
Terningen på 5.0 er 125.0
Terningen på 0,5 er 0,125

Koden ovenfor viser, hvordan du kan få en terning af forskellige typer (int, dobbelt, flyde) ved hjælp af samme metode.

Generelt anvendes metodeoverbelastning til at definere lignende metoder med forskellige parametertyper.

Hvad er metodeoverstyring?

Dette refererer til en anden implementering af en metode i en underklasse. Metoden skal allerede være defineret i overordnet klasse.

Den overordnede metode (dvs. den i underklassen) skal have den samme metodesignatur som den i superklassen. Returtypen for den overordnede metode kan være den samme eller en undertype som den i superklassen.

Overstyring bruges generelt til at inkludere en specifik implementering af et objekts opførsel i underklassen.

klassekonto {
offentlig ugyldig besked () {
System.out.println ("
Tak fordi du åbnede en konto hos os! ");
}
offentlig statisk ugyldig hoved (String args []) {
Konto myAccount = ny konto ();
Besparelser mySavings = nye besparelser ();
FixedDeposit myFixedDepo = ny FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
klasse Savings udvider konto {
offentlig ugyldig besked () {
System.out.println ("
Tak fordi du åbnede en sparekonto hos os! ");
}
}
klasse FixedDeposit udvider konto {
offentlig ugyldig besked () {
System.out.println ("
Tak fordi du åbnede en fast indskudskonto hos os! ");
}
}

Produktion:

Tak fordi du åbnede en konto hos os!
Tak fordi du åbnede en sparekonto hos os!
Tak fordi du åbnede en konto med fast indskud hos os!

Ovenstående eksempel viser, hvordan metoden besked() overstyres i underklasserne Opsparing og FixedDeposit. Forskellige meddelelser vises for bankkontoindehavere med en opsparingskonto og dem med en fast indskudskonto.

Relaterede: Hvad du har brug for at vide om brug af strenge i Java

Det er også værd at bemærke, at metodeoverstyring demonstrerer runtime polymorfisme eller dynamisk metodeudsendelse. Dette betyder, at den metode, der skal kaldes, løses ved runtime snarere end ved kompilering.

Brug nøgleordet for at undgå, at en metode overstyres endelig.

endelig ugyldig besked () {
System.out.println ("
Tak fordi du åbnede en konto hos os! ");
}

Når en underklasse forsøger at tilsidesætte den, opstår der en kompileringsfejl.

Ideelt set burde alle metoder kaldet inden for en konstruktør være endelig. Dette er for at undgå utilsigtede ændringer, der kan være forårsaget af underklasserne.

Nogle gange kan det være nødvendigt at få adgang til en tilsidesat metode inden for den tilsidesættende metode. Du kan bruge nøgleordet super efterfulgt af prikoperatøren (.) og metodens navn i et sådant tilfælde.

Overvej superklassen Dyr.

klasse Dyr {
offentlig ugyldig flytning () {
System.out.println ("
Jeg kan bevæge mig. ");
}
}

Nedenfor er en underklasse, kaldet Fisk, der tilsidesætter bevæge sig():

klasse Fisk udvider Animal {
offentlig ugyldig flytning () {
System.out.println ("
Jeg kan svømme.");
super.move ();
}
offentlig statisk ugyldig hoved (String args []) {
Fisk Tilapia = ny fisk ();
Tilapia.move ();
}
}

Produktion:

Jeg kan svømme.
Jeg kan bevæge mig.

Når du tilsidesætter en metode, skal du også være opmærksom på den anvendte adgangsmodifikator. Modifikatoren i underklassen skal have samme synlighedsniveau eller højere end i basisklassen. For eksempel, hvis metoden i baseklassen er defineret som beskyttet, så kan den overordnede metode enten være beskyttet eller offentlig.

Enkel kode med polymorfisme

Metodeoverstyring og overbelastning er vigtig for kodeforenkling, og enkel kode er god praksis.

Hvorfor? Forestil dig en kompleks kodebase med flere detaljer end end Grand Central Station. Forestil dig nu, at en ødelæggende bug begynder at ødelægge dit hårde arbejde lige foran dine øjne. Du skal isolere infektionskilden, og du skal gøre det hurtigt.

Held og lykke, du forenklede ikke din kode... Nu er du ved at få en sand lektion i kryptografi. At anvende effektive datastrukturer og gøre hvad du kan for at forkorte kode (såsom at holde TØRRE i tankerne) er dit bedste forsvar mod en situation som denne.

Næste op på din Java-læringsliste skal arbejde med arrays. De er vigtige datastrukturer, der bruges til at gemme batcher af datapunkter.

E-mail
Sådan oprettes og udføres operationer på arrays i Java

Lærer du Java? Lad arrays håndtere dine data med lethed.

Læs Næste

Relaterede emner
  • Programmering
  • Java
  • Kodning Tutorials
Om forfatteren
Jerome Davidson (15 artikler offentliggjort)

Jerome er Staff Writer hos MakeUseOf. Han dækker artikler om programmering og Linux. Han er også en kryptoentusiast og holder altid styr på kryptoindustrien.

Mere fra Jerome Davidson

Abonner på vores nyhedsbrev

Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!

Et trin mere !!!

Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.

.