Žodis polimorfizmas reiškia turėti daug formų. Paprastais žodžiais tariant, galime apibrėžti „Java“ polimorfizmą kaip žinutės galimybę rodyti daugiau nei viena forma. Šiame straipsnyje mes sužinosime, kas yra polimorfizmas ir jo tipas.
Realaus gyvenimo polimorfizmo iliustracija Java : Žmogus vienu metu gali turėti įvairių savybių. Kaip vyras tuo pačiu metu yra tėvas, vyras ir darbuotojas. Taigi tas pats asmuo skirtingose situacijose elgiasi skirtingai. Tai vadinama polimorfizmu.
Kas yra „Java“ polimorfizmas?
Polimorfizmas laikomas vienu iš svarbių objektinio programavimo bruožų. Polimorfizmas leidžia mums atlikti vieną veiksmą skirtingais būdais. Kitaip tariant, polimorfizmas leidžia apibrėžti vieną sąsają ir turėti kelis įgyvendinimus. Žodis poli reiškia daug, o morphs reiškia formas, taigi jis reiškia daugybę formų.
Java polimorfizmo rūšys
Java polimorfizmas daugiausia skirstomas į du tipus:
- Kompiliavimo laiko polimorfizmas
- Vykdymo laiko polimorfizmas
Kompiliavimo laiko polimorfizmas Java
Jis taip pat žinomas kaip statinis polimorfizmas. Šio tipo polimorfizmas pasiekiamas perkraunant funkciją arba operatoriaus perkrovą.
Pastaba: Tačiau „Java“ nepalaiko operatoriaus perkrovos.

Metodas Perkrovimas
Kai yra kelios funkcijos tuo pačiu pavadinimu, bet skirtingais parametrais, šios funkcijos vadinamos perkrautas . Funkcijos gali būti perkrautos pasikeitus argumentų skaičiui ir (arba) pasikeitus argumentų tipui.
1 pavyzdys:
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>));> >}> }> |
>
>Išvestis
8 34.65>
2 pavyzdys:
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>));> >}> }> |
>
java lygu metodas
>Išvestis
8 42>
Kompiliavimo laiko polimorfizmo potipiai
1. Funkcija Perkrovimas
Tai C++ funkcija, kai kelios funkcijos gali turėti tą patį pavadinimą, bet su skirtingais parametrų sąrašais. Kompiliatorius nuspręs, kurią funkciją iškviesti, atsižvelgdamas į funkcijai perduotų argumentų skaičių ir tipus.
2. Operatoriaus perkrova
Tai yra C++ funkcija, kur tokiems operatoriams kaip +, -, * ir tt gali būti suteikta papildomų reikšmių, kai jie taikomi vartotojo apibrėžtiems duomenų tipams.
3. Šablonas
tai galinga C++ funkcija, leidžianti rašyti bendrąsias funkcijas ir klases. Šablonas yra funkcijų ar klasių šeimos kūrimo planas.
Vykdymo laiko polimorfizmas Java
Jis taip pat žinomas kaip dinaminis metodo išsiuntimas. Tai procesas, kurio metu funkcijos iškvietimas į nepaisytą metodą išsprendžiamas vykdymo metu. Šio tipo polimorfizmas pasiekiamas naudojant Metodo nepaisymą. Metodo viršenybė Kita vertus, įvyksta, kai išvestinė klasė turi vienos iš pagrindinės klasės narių funkcijų apibrėžimą. Sakoma, kad ta pagrindinė funkcija nepaisoma .
Pavyzdys
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();> >}> }> |
>
>Išvestis
subclass1 subclass2>
Aukščiau pateikto kodo paaiškinimas:
Šioje programoje, kai sukuriamas antrinės klasės objektas, iškviečiamas antrinės klasės metodas. Taip yra todėl, kad pagrindinės klasės metodą nepaiso antrinė klasė. Kadangi metodas yra nepaisomas, šis metodas turi didesnį prioritetą nei pirminis metodas antrinėje klasėje. Taigi, kūnui vaikų klasėje yra įvykdyta mirties bausmė.
Vykdymo laiko polimorfizmo potipis
i. Virtualios funkcijos
Tai leidžia išvestinės klasės objektui elgtis taip, lyg jis būtų pagrindinės klasės objektas. Išvestinė klasė gali nepaisyti virtualios pagrindinės klasės funkcijos, kad pateiktų savo įgyvendinimą. Funkcijos iškvietimas išsprendžiamas vykdymo metu, atsižvelgiant į faktinį objekto tipą.
Diagrama –

„Java“ polimorfizmas yra sąvoka, leidžianti skirtingų klasių objektus traktuoti kaip bendros klasės objektus. Tai leidžia objektams elgtis skirtingai, atsižvelgiant į jų specifinį klasės tipą.
„Java“ polimorfizmo pranašumai
- Padidina kodo pakartotinį naudojimą, leidžiant skirtingų klasių objektus laikyti bendros klasės objektais.
- Pagerina kodo skaitomumą ir palaikymą sumažinant kodo, kurį reikia parašyti ir prižiūrėti, kiekį.
- Palaiko dinaminį susiejimą, leidžiantį iškviesti teisingą metodą vykdymo metu, atsižvelgiant į tikrąją objekto klasę.
- Leidžia objektus traktuoti kaip vieno tipo objektus, todėl lengviau rašyti bendrąjį kodą, galintį tvarkyti skirtingų tipų objektus.
„Java“ polimorfizmo trūkumai
- Gali būti sunkiau suprasti objekto elgesį, ypač jei kodas sudėtingas.
- Dėl to gali kilti našumo problemų, nes dėl polimorfinio elgesio gali prireikti papildomų skaičiavimų vykdymo metu.