logo

Polimorfizem v Javi

Beseda polimorfizem pomeni imeti veliko oblik. Preprosto povedano, polimorfizem Java lahko opredelimo kot sposobnost sporočila, da se prikaže v več kot eni obliki. V tem članku bomo izvedeli, kaj je polimorfizem in njegove vrste.

Ilustracija polimorfizma v Javi v resničnem življenju : Oseba ima lahko hkrati različne lastnosti. Tako kot je moški hkrati oče, mož in zaposleni. Torej se ista oseba v različnih situacijah obnaša različno. To imenujemo polimorfizem.

Kaj je polimorfizem v Javi?

Polimorfizem velja za eno od pomembnih lastnosti objektno orientiranega programiranja. Polimorfizem nam omogoča, da eno dejanje izvajamo na različne načine. Z drugimi besedami, polimorfizem vam omogoča, da definirate en vmesnik in imate več izvedb. Beseda poli pomeni veliko in morphs pomeni oblike, torej pomeni veliko oblik.



Vrste polimorfizma Java

V Javi je polimorfizem v glavnem razdeljen na dve vrsti:

  • Polimorfizem med prevajanjem
  • Polimorfizem izvajalnega okolja

Polimorfizem med prevajanjem v Javi

Znan je tudi kot statični polimorfizem. To vrsto polimorfizma dosežemo s preobremenitvijo funkcij ali preobremenitvijo operatorjev.

Opomba: Toda Java ne podpira preobremenitve operaterja.

Javanski polimorfizem

Preobremenitev metode

Če obstaja več funkcij z istim imenom, vendar različnimi parametri, se te funkcije imenujejo preobremenjeni . Funkcije so lahko preobremenjene s spremembami v številu argumentov ali/in spremembo vrste argumentov.

metoda tostring

Primer 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>));> >}> }>

>

>

Izhod

8 34.65>

Primer 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>));> >}> }>

>

>

Izhod

8 42>

Podtipi polimorfizma med prevajanjem

1. Preobremenitev funkcij

To je funkcija v C++, kjer ima lahko več funkcij isto ime, vendar z različnimi seznami parametrov. Prevajalnik se bo odločil, katero funkcijo bo poklical na podlagi števila in vrst argumentov, posredovanih funkciji.

2. Preobremenitev operaterja

To je funkcija v C++, kjer lahko operatorji, kot so +, -, * itd., dobijo dodatne pomene, ko jih uporabimo za uporabniško definirane vrste podatkov.

3. Predloga

je močna funkcija v C++, ki nam omogoča pisanje generičnih funkcij in razredov. Predloga je načrt za ustvarjanje družine funkcij ali razredov.

Polimorfizem izvajalnega okolja v Javi

Znan je tudi kot pošiljanje dinamične metode. To je proces, v katerem je klic funkcije preglasene metode razrešen med izvajanjem. To vrsto polimorfizma dosežemo s preglasitvijo metode. Preglasitev metode , po drugi strani pa se zgodi, ko ima izpeljani razred definicijo za eno od funkcij članov osnovnega razreda. Ta osnovna funkcija naj bi bila preglasiti .

niz bajtov v niz

Primer

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();> >}> }>

>

>

Izhod

subclass1 subclass2>

Razlaga zgornje kode:

V tem programu, ko se ustvari predmet podrejenega razreda, se pokliče metoda znotraj podrejenega razreda. To je zato, ker metodo v nadrejenem razredu preglasi podrejeni razred. Ker je metoda preglasena, ima ta metoda večjo prednost kot nadrejena metoda znotraj podrejenega razreda. Torej, telo znotraj podrejenega razreda je izvedeno.

Podvrsta izvajalnega polimorfizma

jaz. Virtualne funkcije

Objektu izpeljanega razreda omogoča, da se obnaša, kot da bi bil objekt osnovnega razreda. Izpeljani razred lahko preglasi virtualno funkcijo osnovnega razreda, da zagotovi lastno implementacijo. Klic funkcije se razreši med izvajanjem, odvisno od dejanskega tipa objekta.

Diagram –

Vrste polimorfizma v Javi

Polimorfizem v Javi je koncept, ki omogoča, da se objekti različnih razredov obravnavajo kot objekti skupnega razreda. Omogoča, da se objekti obnašajo drugače glede na njihov specifični tip razreda.

Prednosti polimorfizma v Javi

  1. Poveča možnost ponovne uporabe kode, tako da omogoča, da se objekti različnih razredov obravnavajo kot objekti skupnega razreda.
  2. Izboljša berljivost in vzdržljivost kode z zmanjšanjem količine kode, ki jo je treba napisati in vzdrževati.
  3. Podpira dinamično vezavo, ki omogoča klic pravilne metode med izvajanjem na podlagi dejanskega razreda predmeta.
  4. Omogoča, da se objekti obravnavajo kot ena vrsta, kar olajša pisanje generične kode, ki lahko obravnava predmete različnih tipov.

Slabosti polimorfizma v Javi

  1. Lahko oteži razumevanje obnašanja predmeta, zlasti če je koda zapletena.
  2. To lahko povzroči težave z zmogljivostjo, saj lahko polimorfno vedenje zahteva dodatne izračune med izvajanjem.