Úvod do runtime polymorfismu v Javě

V tomto článku se chystáme dozvědět více o runtime polymorfismu v Javě. „Poly“ znamená „mnoho“ a „morf“ znamená „typ“. Pojem polymorfismus tedy označuje stejnou věc různých typů. Zde uvidíme, jak Java archivuje polymorfismus za běhu, což znamená, po kompilaci, ale před spuštěním kódu.

Syntax:

U runtime polymorfismu v Javě byste měli sledovat základní syntaxi javy s anotacemi. @Override anotace může být použita zde konkrétně upozornit, kterou metodu chceme přepsat.

Jak funguje běhový polymorfismus v Javě?

Runtime polymorfismus pracuje v Javě metodou potlačení. K přepisování metod dochází, když objekty mají stejný název metody a argumenty a typ jako její nadřazená třída, ale s odlišnou funkčností. Pokud podřízená třída obsahuje tento typ metody, nazýváme ji přepsanou metodou.

Proč se tomu říká Runtime Polymorfismus?

když voláme potlačenou metodu podřízené třídy prostřednictvím odkazu na nadřazený typ (tento jev v java se označuje jako „vyvržení“), pak typ objektu označuje, která metoda nebo funkce bude vyvolána. Toto rozhodnutí se děje během běhu JVM po kompilaci kódu. Proto se nazývá polymorfismus runtime.

Nazývá se také „Dynamický způsob odeslání“. Důvod je jmenován tak, vzhledem k tomu, že funkčnost metody je dynamicky rozhodována v době běhu podle objektu JVM

Nazývá se také „Pozdní vazba“, protože o vazbě metody a objektu, což znamená funkčnost metody objektu, která bude zobrazena, se rozhodne pozdě, tj. Po kompilaci.

Pravidla a omezení v Runtim e Polymorfismus

Níže jsou uvedena některá pravidla a omezení runtime polymorfismu:

Pravidla běhového polymorfismu

  • Metody podřízené a nadřazené třídy musí mít stejné jméno.
  • Metody podřízené a nadřazené třídy musí mít stejný parametr.
  • Vztah IS-A je povinný (dědičnost).

Omezení běhového polymorfismu

  • Soukromé metody nadřazené třídy nelze přepsat.
  • Konečné metody nelze přepsat.
  • Nelze potlačit statické metody.

Příklady běhového polymorfismu v Javě

Zde si probereme některé příklady kódu polymorfismu Run time.

Příklad č. 1

V tomto příkladu ukážeme, jak metoda showcase () zobrazuje různé zprávy v závislosti na typu objektu, ke kterému je přidružena. Pokud je spojen s typem „Rodiče“, zobrazuje zprávy z nadřazené třídy. Zatímco je spojen s typem „Děti“, zobrazuje zprávy z podřízené třídy.

Kód:

class Parents (
public void showcase () (
System.out.println("I am Parent");
)
)
class Children extends Parents (
@Override
public void showcase () (
System.out.println("I am Children");
)
)
public class RunTimePolymorphism (
public static void main(String args()) (
Parents superObject = new Parents();
superObject.showcase(); //method of super class or parent class is called
Parents subObject = new Children(); // upcasting
subObject.showcase();//method of sub class or child class is called by Parent reference, this is called "Run time Polymorphism"
Children subObject2 = new Children();
subObject2.showcase(); //method of sub class or child class is called
)
)

Výstup:

Příklad č. 2

Vezměme si příklad běhového polymorfismu v případě víceúrovňové dědičnosti. V tomto příkladu jsme vzali v úvahu dvě úrovně dědičnosti. V tomto příkladu ukážeme, jak metoda sip () zobrazuje různé zprávy v závislosti na typu objektu, ke kterému je přidružen. Pokud je spojen s typem „Člověk“, zobrazuje zprávy z nadřazené třídy. Zatímco je spojen s typem „Man“, zobrazuje zprávy ze své podřízené třídy. Opět ve druhé úrovni dědičnosti, když je spojena s typem „Baby“, zobrazuje zprávy od své podřízené třídy svého rodiče, což je třída „Man“.

Kód:

class Human(
void sip() (
System.out.println("Human is sipping");
)
)
class Man extends Human(
void sip()(
System.out.println("Man is sipping soup");
)
)
class Baby extends Man(
void sip()(
System.out.println("Baby is sipping milk");
)
)
public class RunTimePolymorphism (
public static void main(String args())(
Human superObject=new Human();
Human subObject=new Man(); // // upcasting : first level of heritance
Human babyObject=new Baby(); // // upcasting : second level of heritance
superObject.sip();
subObject.sip(); //run time polymorphism happening in first level of heritance
babyObject.sip(); //run time polymorphism happening in second level of heritance
)
)

Výstup:

Příklad č. 3

Vezměme si další příklad běhového polymorfismu v případě víceúrovňové dědičnosti. V tomto příkladu máme tři úrovně dědičnosti. V tomto příkladu ukážeme, jak metoda method () zobrazuje různé funkce v závislosti na typu objektu, ke kterému je přiřazen. Pokud je přidružen k typu „operační systém“, zobrazuje zprávy z nadřazené třídy. Zatímco je spojen s typem „DOS“, zobrazuje zprávy ze své podřízené třídy. Opět ve druhé úrovni dědičnosti, když je spojena s typem „Windows“, zobrazuje zprávy ze své podřízené třídy svého nadřazeného, ​​což je třída „DOS“. Opět ve třetí úrovni dědičnosti, když je spojen s typem „WindowsMobile“, zobrazuje zprávy od své podřízené třídy své nadřazené, která je „Windows“ třídou.

Kód:

class OperatingSytem(
void feature() (
System.out.println("This is Operating Sytem");
)
)
class DOS extends OperatingSytem(
void feature()(
System.out.println("This is DOS");
)
)
class Windows extends DOS(
void feature()(
System.out.println("This is Windows");
)
)
class WindowsMobile extends Windows(
void feature()(
System.out.println("This is Windows Mobile");
)
)
public class RunTimePolymorphism (
public static void main(String args())(
OperatingSytem superObject=new OperatingSytem();
OperatingSytem subObject=new DOS(); // child object type : first level of heritance
OperatingSytem sub2Object=new Windows(); // child object type : second level of heritance
OperatingSytem sub3Object=new WindowsMobile(); // child object type : third level of heritance
superObject.feature();
subObject.feature(); //run time polymorphism happening in first level of heritance
sub2Object.feature(); //run time polymorphism happening in second level of heritance
sub3Object.feature(); //run time polymorphism happening in third level of heritance
)
)

Výstup:

Závěr

Tím se uzavírá naše učení tématu „Runtime Polymorfismus v Javě“. Napište si kódy uvedené ve výše uvedených příkladech do kompilátoru java a ověřte výstup. Pokud kódy sami nepíšete, učení kódů bude neúplné.

Doporučené články

Toto byl průvodce Runtime Polymorfismem v Javě. Zde diskutujeme o tom, jak Runtime Polymorfismus funguje na jávě s příklady. Další informace naleznete také v následujících článcích -

  1. Statické klíčové slovo v Javě
  2. Převažující v Javě
  3. Co je to polymorfismus?
  4. Rust vs Golang

Kategorie: