Ordet polymorfisme betyr å ha mange former. Med enkle ord kan vi definere Java Polymorphism som muligheten til en melding til å vises i mer enn én form. I denne artikkelen vil vi lære hva som er polymorfisme og typen.
Virkelig illustrasjon av polymorfisme i Java : En person på samme tid kan ha ulike egenskaper. Som en mann på samme tid er en far, en ektemann og en ansatt. Så samme person har forskjellig oppførsel i forskjellige situasjoner. Dette kalles polymorfisme.
Hva er polymorfisme i Java?
Polymorfisme regnes som en av de viktige egenskapene til objektorientert programmering. Polymorfisme lar oss utføre en enkelt handling på forskjellige måter. Med andre ord lar polymorfisme deg definere ett grensesnitt og ha flere implementeringer. Ordet poly betyr mange og morphs betyr former, så det betyr mange former.
Typer Java-polymorfisme
I Java er polymorfisme hovedsakelig delt inn i to typer:
- Kompileringstidspolymorfisme
- Runtime polymorfisme
Kompileringstidspolymorfisme i Java
Det er også kjent som statisk polymorfisme. Denne typen polymorfisme oppnås ved funksjonsoverbelastning eller operatøroverbelastning.
smtp Internett-protokoll
Merk: Men Java støtter ikke Operator Overloading.

Metode Overbelastning
Når det er flere funksjoner med samme navn, men forskjellige parametere, sies disse funksjonene å være det overbelastet . Funksjoner kan overbelastes av endringer i antall argumenter eller/og endring i type argumenter.
Eksempel 1:
Java
// Java Program for Method overloading> // By using Different Types of Arguments> // Class 1> // Helper class> class> Helper {> >// Method with 2 integer parameters> >static> int> Multiply(>int> a,>int> b)> >{> >// Returns product of integer numbers> >return> a * b;> >}> >// Method 2> >// With same name but with 2 double parameters> >static> double> Multiply(>double> a,>double> b)> >{> >// Returns product of double numbers> >return> a * b;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>5.5>,>6.3>));> >}> }> |
>
>Produksjon
sletting fra et binært søketre
8 34.65>
Eksempel 2:
Java
// Java program for Method Overloading> // by Using Different Numbers of Arguments> // Class 1> // Helper class> class> Helper {> >// Method 1> >// Multiplication of 2 numbers> >static> int> Multiply(>int> a,>int> b)> >{> >// Return product> >return> a * b;> >}> >// Method 2> >// // Multiplication of 3 numbers> >static> int> Multiply(>int> a,>int> b,>int> c)> >{> >// Return product> >return> a * b * c;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>2>,>7>,>3>));> >}> }> |
>
>Produksjon
rund matematikk java
8 42>
Undertyper av kompileringstidspolymorfisme
1. Funksjon Overbelastning
Det er en funksjon i C++ hvor flere funksjoner kan ha samme navn, men med forskjellige parameterlister. Kompilatoren vil bestemme hvilken funksjon som skal kalles basert på antall og typer argumenter som sendes til funksjonen.
2. Operatør Overbelastning
Det er en funksjon i C++ hvor operatorene som +, -, * osv. kan gis ytterligere betydninger når de brukes på brukerdefinerte datatyper.
3. Mal
det er en kraftig funksjon i C++ som lar oss skrive generiske funksjoner og klasser. En mal er en blåkopi for å lage en familie av funksjoner eller klasser.
Runtime Polymorphism i Java
Det er også kjent som Dynamic Method Dispatch. Det er en prosess der et funksjonskall til den overstyrte metoden løses ved Runtime. Denne typen polymorfisme oppnås ved metodeoverstyring. Metode overstyrer , på den annen side, oppstår når en avledet klasse har en definisjon for en av medlemsfunksjonene til basisklassen. Den basisfunksjonen sies å være overstyrt .
Eksempel
Java
// Java Program for Method Overriding> // Class 1> // Helper class> class> Parent {> >// Method of parent class> >void> Print()> >{> >// Print statement> >System.out.println(>'parent class'>);> >}> }> // Class 2> // Helper class> class> subclass1>extends> Parent {> >// Method> >void> Print() { System.out.println(>'subclass1'>); }> }> // Class 3> // Helper class> class> subclass2>extends> Parent {> >// Method> >void> Print()> >{> >// Print statement> >System.out.println(>'subclass2'>);> >}> }> // Class 4> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of class 1> >Parent a;> >// Now we will be calling print methods> >// inside main() method> >a =>new> subclass1();> >a.Print();> >a =>new> subclass2();> >a.Print();> >}> }> |
>
matematikk.tilfeldig java
>Produksjon
subclass1 subclass2>
Forklaring av koden ovenfor:
Her i dette programmet, når et objekt av en barneklasse er opprettet, kalles metoden inne i barneklassen. Dette er fordi metoden i overordnet klasse overstyres av barneklassen. Siden metoden er overstyrt, har denne metoden større prioritet enn den overordnede metoden i barneklassen. Så kroppen i barneklassen blir henrettet.
Undertype av Run-time Polymorphism
Jeg. Virtuelle funksjoner
Den lar et objekt av en avledet klasse oppføre seg som om det var et objekt av basisklassen. Den avledede klassen kan overstyre den virtuelle funksjonen til basisklassen for å gi sin egen implementering. Funksjonskallet løses under kjøring, avhengig av den faktiske typen objekt.
Diagram –

Polymorfisme i Java er et konsept som gjør at objekter av forskjellige klasser kan behandles som objekter av en felles klasse. Det gjør det mulig for objekter å oppføre seg annerledes basert på deres spesifikke klassetype.
Fordeler med polymorfisme i Java
- Øker kodegjenbrukbarhet ved å tillate at objekter av forskjellige klasser behandles som objekter av en felles klasse.
- Forbedrer lesbarhet og vedlikehold av kode ved å redusere mengden kode som må skrives og vedlikeholdes.
- Støtter dynamisk binding, slik at den riktige metoden kan kalles under kjøring, basert på den faktiske klassen til objektet.
- Gjør det mulig å behandle objekter som én enkelt type, noe som gjør det enklere å skrive generisk kode som kan håndtere objekter av forskjellige typer.
Ulemper med polymorfisme i Java
- Kan gjøre det vanskeligere å forstå oppførselen til et objekt, spesielt hvis koden er kompleks.
- Dette kan føre til ytelsesproblemer, ettersom polymorf oppførsel kan kreve ytterligere beregninger under kjøring.