logo

Polymorfismus v Javě

Slovo polymorfismus znamená mít mnoho podob. Jednoduše řečeno, můžeme definovat Java Polymorphism jako schopnost zprávy zobrazovat se ve více než jedné formě. V tomto článku se dozvíme, co je polymorfismus a jaký je jeho typ.

Reálná ilustrace polymorfismu v Javě : Osoba může mít zároveň různé vlastnosti. Jako muž je zároveň otcem, manželem a zaměstnancem. Takže stejná osoba má v různých situacích různé chování. Tomu se říká polymorfismus.



Co je polymorfismus v Javě?

Polymorfismus je považován za jeden z důležitých rysů objektově orientovaného programování. Polymorfismus nám umožňuje provádět jednu akci různými způsoby. Jinými slovy, polymorfismus vám umožňuje definovat jedno rozhraní a mít více implementací. Slovo poly znamená mnoho a morphs znamená formy, takže znamená mnoho forem.

Typy Java Polymorfismu

V Javě se polymorfismus dělí hlavně na dva typy:

  • Polymorfismus v době kompilace
  • Polymorfismus za běhu

Polymorfismus v době kompilace v Javě

Je také známý jako statický polymorfismus. Tohoto typu polymorfismu je dosaženo přetížením funkcí nebo přetížením operátorů.



Poznámka: Java však nepodporuje přetížení operátora.

Polymorfismus Java

Přetížení metody

Pokud existuje více funkcí se stejným názvem, ale různými parametry, říká se, že tyto funkce jsou přetížené . Funkce mohou být přetíženy změnami v počtu argumentů nebo/a změnou typu argumentů.



Příklad 1:

Jáva




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

>

>

Výstup

8 34.65>

Příklad 2:

Jáva




// 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ýstup

8 42>

Podtypy polymorfismu v době kompilace

1. Přetížení funkcí

Je to funkce v C++, kde více funkcí může mít stejný název, ale s různými seznamy parametrů. Kompilátor se rozhodne, kterou funkci zavolá, na základě počtu a typů argumentů předávaných funkci.

2. Přetížení operátora

Je to funkce v C++, kde operátorům jako +, -, * atd. lze přiřadit další významy, když jsou aplikovány na uživatelem definované datové typy.

3. Šablona

je to výkonná funkce v C++, která nám umožňuje psát obecné funkce a třídy. Šablona je plán pro vytvoření rodiny funkcí nebo tříd.

Runtime Polymorphism v Javě

Je také známý jako Dynamic Method Dispatch. Je to proces, ve kterém se volání funkce přepsané metody řeší za běhu. Tohoto typu polymorfismu je dosaženo metodou Overriding. Přepsání metody , na druhé straně nastane, když odvozená třída má definici pro jednu z členských funkcí základní třídy. Říká se, že tato základní funkce je přepsáno .

Příklad

Jáva

jak zkontrolovat blokovaná čísla na android




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

>

>

Výstup

subclass1 subclass2>

Vysvětlení výše uvedeného kódu:

Zde v tomto programu, když je vytvořen objekt podřízené třídy, pak je volána metoda uvnitř podřízené třídy. Je to proto, že metoda v nadřazené třídě je přepsána podřízenou třídou. Protože je metoda přepsána, má tato metoda větší prioritu než rodičovská metoda v podřízené třídě. Tělo uvnitř podřízené třídy se tedy provede.

Podtyp běhového polymorfismu

i. Virtuální funkce

Umožňuje objektu odvozené třídy chovat se, jako by to byl objekt základní třídy. Odvozená třída může přepsat virtuální funkci základní třídy a poskytnout svou vlastní implementaci. Volání funkce je vyřešeno za běhu v závislosti na skutečném typu objektu.

Diagram -

Typy polymorfismu v Javě

Polymorfismus v Javě je koncept, který umožňuje, aby se s objekty různých tříd zacházelo jako s objekty společné třídy. Umožňuje objektům chovat se odlišně na základě jejich specifického typu třídy.

Výhody polymorfismu v Javě

  1. Zvyšuje znovupoužitelnost kódu tím, že umožňuje, aby s objekty různých tříd bylo zacházeno jako s objekty společné třídy.
  2. Zlepšuje čitelnost a udržovatelnost kódu snížením množství kódu, který je třeba napsat a udržovat.
  3. Podporuje dynamickou vazbu, která umožňuje volat správnou metodu za běhu na základě skutečné třídy objektu.
  4. Umožňuje, aby se s objekty zacházelo jako s jedním typem, což usnadňuje psaní obecného kódu, který zvládne objekty různých typů.

Nevýhody polymorfismu v Javě

  1. Může ztížit pochopení chování objektu, zvláště pokud je kód složitý.
  2. To může vést k problémům s výkonem, protože polymorfní chování může vyžadovat další výpočty za běhu.