Polymorfisme i Java: Sådan overbelastes eller tilsidesættes metoder

Polymorfisme i Java: Sådan overbelastes eller tilsidesættes metoder

Metodeoverbelastning og tilsidesættelse er de to måder, hvorpå Java demonstrerer polymorfisme. Polymorfisme kommer fra en kombination af to græske ord: 'poly' der betyder mange og 'morph' betyder form. Derfor gør polymorfisme det muligt for metoder 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 signaturer. En metodesignatur er kombinationen af ​​en metodes navn og parameterliste. Det inkluderer ikke returtypen.





Kompilatoren ved, hvilken metode der skal bruges ved at kontrollere typen, antallet af parametre og den rækkefølge, de er placeret i.

Relaterede: Undersøgelse af arv på Java -programmeringssprog



Metodeoverbelastning demonstrerer kompileringstidspolymorfisme. Kompileringstidspolymorfisme betyder, at Java-kompilatoren binder et objekt til dets funktionalitet ved runtime. Kompilatoren kontrollerer metodesignaturer for at opnå dette.

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





Se eksempel på metodeoverbelastning herunder:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Produktion:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

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

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

Hvad er metode tilsidesættende?

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

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 af den i superklassen.

Overstyring bruges generelt til at inkludere en specifik implementering af et objekts adfærd i underklassen.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Produktion:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

Ovenstående eksempel viser, hvordan metoden besked() er tilsidesat i underklasserne Opsparing og FixedDeposit . Der vises forskellige meddelelser for bankkontoindehavere med en sparekonto og dem med en fast indbetalingskonto.

Relaterede: Hvad du behøver at vide om brug af strenge i Java

Det er også værd at bemærke, at metodeoverstyring demonstrerer runtime -polymorfisme eller dynamisk metodeforsendelse. Det betyder, at den metode, der skal kaldes, løses ved runtime frem for ved kompilering.

For at undgå at en metode tilsidesættes, skal du bruge søgeordet endelig .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

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

Ideelt set bør 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 skal du muligvis få adgang til en tilsidesat metode inden for overstyringsmetoden. Du kan bruge søgeordet super efterfulgt af punktoperatoren ( . ) og metodenavnet i et sådant tilfælde.

Overvej superklassen Dyr .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

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

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Produktion:

wifi har ikke en gyldig konfiguration
I can swim.
I can move.

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

Enkel kode med polymorfisme

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

Hvorfor? Forestil dig en kompleks kodebase med flere ins og outs end end Grand Central Station. Forestil dig nu, at en ødelæggende fejl begynder at ødelægge dit hårde arbejde 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 koden (f.eks. At holde TØR 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.

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

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

Læs Næste
Relaterede emner
  • Programmering
  • Java
  • Kodning Tutorials
Om forfatteren Jerome Davidson(22 artikler udgivet)

Jerome er personaleforfatter på MakeUseOf. Han dækker artikler om programmering og Linux. Han er også en kryptoentusiast og holder altid øje med kryptoindustrien.

Mere fra Jerome Davidson

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere