logo

Polimorfisms Java valodā

Vārds polimorfisms nozīmē, ka tam ir daudz formu. Vienkāršiem vārdiem sakot, mēs varam definēt Java polimorfismu kā ziņojuma spēju parādīt vairāk nekā vienā formā. Šajā rakstā mēs uzzināsim, kas ir polimorfisms un tā veids.

Java polimorfisma ilustrācija reālajā dzīvē : Personai vienlaikus var būt dažādas īpašības. Tāpat kā vīrietis vienlaikus ir tēvs, vīrs un darbinieks. Tātad vienai un tai pašai personai dažādās situācijās ir atšķirīga uzvedība. To sauc par polimorfismu.

Kas ir polimorfisms Java valodā?

Polimorfisms tiek uzskatīts par vienu no svarīgākajām objektorientētās programmēšanas iezīmēm. Polimorfisms ļauj mums veikt vienu darbību dažādos veidos. Citiem vārdiem sakot, polimorfisms ļauj definēt vienu saskarni un izmantot vairākas ieviešanas. Vārds poli nozīmē daudz un morphs nozīmē formas, tāpēc tas nozīmē daudzas formas.



Java polimorfisma veidi

Java polimorfismu galvenokārt iedala divos veidos:

  • Kompilēšanas laika polimorfisms
  • Izpildes laika polimorfisms

Kompilēšanas laika polimorfisms Java

To sauc arī par statisko polimorfismu. Šāda veida polimorfisms tiek panākts ar funkciju pārslodzi vai operatora pārslodzi.

Piezīme: Taču Java neatbalsta operatora pārslodzi.

Java polimorfisms

Metode Pārslodze

Ja ir vairākas funkcijas ar tādu pašu nosaukumu, bet atšķirīgi parametri, tad tiek uzskatīts, ka šīs funkcijas ir pārslogots . Funkcijas var pārslogot, mainot argumentu skaitu un/vai mainot argumentu veidu.

1. piemērs:

Java




lapsa vai vilks

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

>

>

Izvade

8 34.65>

2. piemērs:

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

>

>

Izvade

8 42>

Kompilēšanas laika polimorfisma apakštipi

1. Funkciju pārslodze

Tā ir C++ funkcija, kurā vairākām funkcijām var būt vienāds nosaukums, bet ar dažādiem parametru sarakstiem. Kompilators izlems, kuru funkciju izsaukt, pamatojoties uz funkcijai nodoto argumentu skaitu un veidiem.

2. Operatora pārslodze

Tā ir C++ funkcija, kurā operatoriem, piemēram, +, -, * utt., var piešķirt papildu nozīmes, ja tie tiek lietoti lietotāja definētiem datu tipiem.

3. Veidne

tā ir spēcīga C++ funkcija, kas ļauj rakstīt vispārīgas funkcijas un klases. Veidne ir plāns funkciju vai klašu saimes izveidei.

Izpildes laika polimorfisms Java

To sauc arī par dinamiskās metodes nosūtīšanu. Tas ir process, kurā funkcijas izsaukums ignorētajai metodei tiek atrisināts izpildlaikā. Šāda veida polimorfisms tiek panākts, izmantojot Method Overriding. Metodes ignorēšana , no otras puses, rodas, ja atvasinātai klasei ir definīcija vienai no bāzes klases locekļu funkcijām. Tiek uzskatīts, ka šī pamata funkcija ir ignorēts .

Piemērs

Java




xor valodā c++

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

>

>

Izvade

subclass1 subclass2>

Iepriekš minētā koda skaidrojums:

Šajā programmā, kad tiek izveidots bērnu klases objekts, tiek izsaukta metode bērnu klasē. Tas ir tāpēc, ka metodi vecākklasē ignorē pakārtotā klase. Tā kā metode ir ignorēta, šai metodei ir lielāka prioritāte nekā vecākmetodei pakārtotajā klasē. Tātad, ķermenis bērnu klasē tiek izpildīts.

Izpildes laika polimorfisma apakštips

i. Virtuālās funkcijas

Tas ļauj atvasinātās klases objektam izturēties tā, it kā tas būtu bāzes klases objekts. Atvasinātā klase var ignorēt pamata klases virtuālo funkciju, lai nodrošinātu savu ieviešanu. Funkcijas izsaukums tiek atrisināts izpildes laikā atkarībā no faktiskā objekta veida.

Diagramma -

Java polimorfisma veidi

Java polimorfisms ir jēdziens, kas ļauj dažādu klašu objektus uzskatīt par kopējas klases objektiem. Tas ļauj objektiem rīkoties atšķirīgi atkarībā no to īpašā klases veida.

Java polimorfisma priekšrocības

  1. Palielina koda atkārtotu izmantošanu, ļaujot dažādu klašu objektus uzskatīt par kopējas klases objektiem.
  2. Uzlabo koda lasāmību un apkopi, samazinot koda daudzumu, kas jāraksta un jāuztur.
  3. Atbalsta dinamisko saistīšanu, ļaujot izpildlaikā izsaukt pareizo metodi, pamatojoties uz faktisko objekta klasi.
  4. Ļauj apstrādāt objektus kā viena veida objektus, atvieglojot vispārīga koda rakstīšanu, kas var apstrādāt dažāda veida objektus.

Java polimorfisma trūkumi

  1. Var apgrūtināt objekta darbības izpratni, it īpaši, ja kods ir sarežģīts.
  2. Tas var radīt veiktspējas problēmas, jo polimorfas darbības dēļ izpildlaikā var būt nepieciešami papildu aprēķini.