logo

Polymorfizmus v Jave

Slovo polymorfizmus znamená mať mnoho podôb. Jednoducho povedané, môžeme definovať Java Polymorfizmus ako schopnosť správy zobraziť sa vo viac ako jednej forme. V tomto článku sa dozvieme, čo je polymorfizmus a aký je jeho typ.

Reálna ilustrácia polymorfizmu v Jave : Osoba môže mať súčasne rôzne vlastnosti. Ako muž je zároveň otcom, manželom a zamestnancom. Takže tá istá osoba má rôzne správanie v rôznych situáciách. Toto sa nazýva polymorfizmus.

Čo je polymorfizmus v Jave?

Polymorfizmus sa považuje za jednu z dôležitých vlastností objektovo orientovaného programovania. Polymorfizmus nám umožňuje vykonávať jednu akciu rôznymi spôsobmi. Inými slovami, polymorfizmus vám umožňuje definovať jedno rozhranie a mať viacero implementácií. Slovo poly znamená veľa a morphs znamená formy, takže to znamená veľa foriem.



Typy polymorfizmu Java

V Jave sa polymorfizmus delí hlavne na dva typy:

  • Polymorfizmus v čase kompilácie
  • Runtime Polymorfizmus

Polymorfizmus v čase kompilácie v Jave

Je tiež známy ako statický polymorfizmus. Tento typ polymorfizmu sa dosahuje preťažením funkcie alebo preťažením operátora.

Poznámka: Java však nepodporuje preťaženie operátora.

Polymorfizmus Java

Preťaženie metódy

Ak existuje viacero funkcií s rovnakým názvom, ale rôznymi parametrami, potom sa tieto funkcie nazývajú preťažený . Funkcie môžu byť preťažené zmenami v počte argumentov alebo/a zmenou typu argumentov.

Príklad 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>));> >}> }>

ako zistiť veľkosť displeja
>

>

Výkon

8 34.65>

Príklad 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>));> >}> }>

>

>

Výkon

8 42>

Podtypy polymorfizmu v čase kompilácie

1. Preťaženie funkcií

Je to funkcia v C++, kde viaceré funkcie môžu mať rovnaký názov, ale s rôznymi zoznamami parametrov. Kompilátor sa rozhodne, ktorú funkciu zavolá na základe počtu a typov argumentov odovzdaných funkcii.

slučka java do while

2. Preťaženie operátora

Je to funkcia v C++, kde operátorom ako +, -, * atď. možno priradiť ďalší význam, keď sa aplikujú na užívateľom definované dátové typy.

3. Šablóna

je to výkonná funkcia v C++, ktorá nám umožňuje písať generické funkcie a triedy. Šablóna je plán na vytvorenie rodiny funkcií alebo tried.

Runtime Polymorphism v Jave

Je tiež známy ako Dynamic Method Dispatch. Je to proces, v ktorom je volanie funkcie prepísanej metódy vyriešené v Runtime. Tento typ polymorfizmu sa dosahuje prepisovaním metódy. Prepísanie metódy , na druhej strane nastane, keď odvodená trieda má definíciu pre jednu z členských funkcií základnej triedy. Hovorí sa, že táto základná funkcia je prepísané .

Príklad

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

unsigned int c programovanie
>

>

Výkon

subclass1 subclass2>

Vysvetlenie vyššie uvedeného kódu:

Tu v tomto programe, keď sa vytvorí objekt podradenej triedy, potom sa zavolá metóda v podradenej triede. Je to preto, že metóda v rodičovskej triede je prepísaná podradenou triedou. Keďže metóda je prepísaná, táto metóda má väčšiu prioritu ako rodičovská metóda v podradenej triede. Spustí sa teda telo v podradenej triede.

Podtyp run-time polymorfizmu

i. Virtuálne funkcie

Umožňuje objektu odvodenej triedy správať sa tak, ako keby to bol objekt základnej triedy. Odvodená trieda môže prepísať virtuálnu funkciu základnej triedy, aby poskytla svoju vlastnú implementáciu. Volanie funkcie sa vyrieši za behu v závislosti od skutočného typu objektu.

Diagram –

Typy polymorfizmu v Jave

Polymorfizmus v Jave je koncept, ktorý umožňuje, aby sa s objektmi rôznych tried zaobchádzalo ako s objektmi spoločnej triedy. Umožňuje objektom správať sa odlišne na základe ich špecifického typu triedy.

Výhody polymorfizmu v Jave

  1. Zvyšuje znovupoužiteľnosť kódu tým, že umožňuje, aby sa s objektmi rôznych tried zaobchádzalo ako s objektmi spoločnej triedy.
  2. Zlepšuje čitateľnosť a udržiavateľnosť kódu znížením množstva kódu, ktorý je potrebné napísať a udržiavať.
  3. Podporuje dynamickú väzbu, ktorá umožňuje zavolať správnu metódu za behu na základe skutočnej triedy objektu.
  4. Umožňuje, aby sa s objektmi zaobchádzalo ako s jedným typom, čo uľahčuje písanie generického kódu, ktorý dokáže spracovať objekty rôznych typov.

Nevýhody polymorfizmu v Jave

  1. Môže sťažiť pochopenie správania objektu, najmä ak je kód zložitý.
  2. To môže viesť k problémom s výkonom, pretože polymorfné správanie môže vyžadovať dodatočné výpočty za behu.