Úvod do runtime polymorfizmu v Jave

V tomto článku sa dozvieme viac o polymorfizme runtime v Jave. „Poly“ znamená „veľa“ a „morf“ znamená „typ“. Pojem polymorfizmus teda označuje to isté ako u rôznych typov. Tu uvidíme, ako Java archivuje polymorfizmus za behu, čo znamená, po kompilácii, ale pred spustením kódu.

syntaxe:

Pre runtime polymorfizmus v Jave by ste mali postupovať podľa základnej syntaxe javy s anotáciami. @Override anotácia sa tu môže použiť na konkrétne zdôraznenie, ktorú metódu chceme prepísať.

Ako funguje runtime polymorfizmus v Jave?

Runtime polymorfizmus funguje v Jave metódou potlačenia. K prepísaniu metódy dochádza, keď objekty majú rovnaký názov a argumenty metódy a typ ako nadradená trieda, ale s odlišnou funkčnosťou. Ak podriadená trieda obsahuje tento typ metódy, nazývame ju prepísanou metódou.

Prečo sa to nazýva Runtime Polymorfizmus?

keď voláme potlačenú metódu podriadenej triedy prostredníctvom odkazu na rodičovský typ (tento jav v jave sa označuje ako „vyvrhovanie“), potom typ objektu naznačuje, ktorá metóda alebo funkcia bude vyvolaná. Toto rozhodnutie sa stane počas behu programu JVM po kompilácii kódu. Preto sa nazýva ako polymorfizmus runtime.

Nazýva sa aj „odosielanie dynamickou metódou“. Dôvod je pomenovaný kvôli skutočnosti, že o funkčnosti metódy sa dynamicky rozhoduje v čase prevádzky podľa objektu JVM.

Nazýva sa aj „oneskorená väzba“, pretože o väzbe metódy a objektu, čo znamená funkčnosť metódy objektu, ktorá sa zobrazí, sa rozhodne neskoro, tj po kompilácii.

Pravidlá a obmedzenia v Runtim e Polymorfizmus

Nižšie sú uvedené niektoré z pravidiel a obmedzení runtime polymorfizmu:

Pravidlá runtime polymorfizmu

  • Metódy triedy detí a rodičov musia mať rovnaké meno.
  • Metódy triedy dieťa a rodič musia mať rovnaký parameter.
  • Vzťah IS-A je povinný (dedičnosť).

Obmedzenia runtime polymorfizmu

  • Súkromné ​​metódy rodičovskej triedy nemožno potlačiť.
  • Konečné metódy nemožno prepísať.
  • Statické metódy nemožno potlačiť.

Príklady runtime polymorfizmu v Jave

Budeme diskutovať o niektorých príkladoch kódu polymorfizmu runtime.

Príklad č. 1

V tomto príklade ukážeme, ako metóda showcase () zobrazuje rôzne správy v závislosti od typu objektu, ku ktorému je priradená. Ak je priradený k typu „Rodičia“, zobrazuje správy z rodičovskej triedy. Zatiaľ čo, keď je priradený k typu „Deti“, zobrazuje správy z podradenej triedy.

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ýkon:

Príklad č. 2

Vezmime príklad polymorfizmu runtime v prípade viacúrovňového dedičstva. V tomto príklade sme vzali do úvahy dve úrovne dedičstva. V tomto príklade ukážeme, ako metóda sip () zobrazuje rôzne správy v závislosti od typu objektu, ku ktorému je priradená. Ak je priradený k typu „Human“, zobrazuje správy z rodičovskej triedy. Zatiaľ čo, keď je spojený s typom „muž“, zobrazuje správy zo svojej podradenej triedy. Aj v druhej úrovni dedičstva, keď sa spája s typom „Baby“, zobrazuje správy od svojej podradenej triedy svojho rodiča, ktorá je triedou „Človek“.

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ýkon:

Príklad č. 3

Vezmime ďalší príklad polymorfizmu runtime v prípade viacúrovňového dedičstva. V tomto príklade máme tri úrovne dedičnosti. V tomto príklade ukážeme, ako funkcia method () zobrazuje rôzne funkcie v závislosti od typu objektu, ku ktorému je priradená. Ak je priradený k typu „operačný systém“, zobrazuje správy z nadradenej triedy. Zatiaľ čo, keď je priradený k typu „DOS“, zobrazuje správy zo svojej podradenej triedy. Aj v druhej úrovni dedičstva, keď sa spája s typom „Windows“, zobrazuje správy zo svojej podradenej triedy svojho rodiča, ktorá je triedou „DOS“. Pokiaľ ide o tretiu úroveň dedičstva, opäť sa spája s typom „WindowsMobile“ a zobrazuje správy od svojej podradenej triedy svojho rodiča, ktorá je triedou „Windows“.

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ýkon:

záver

Týmto sa končí učenie témy „Runtime Polymorfizmus v Jave“. Napíšte si kódy uvedené vo vyššie uvedených príkladoch do kompilátora java a overte výstup. Naučenie kódov bude neúplné, ak sami nepíšete kód.

Odporúčané články

Toto bol sprievodca Runtime Polymorphism v Jave. Tu diskutujeme o tom, ako behaviorálny polymorfizmus funguje v jave s príkladmi. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Statické kľúčové slovo v jazyku Java
  2. Prevláda v Jave
  3. Čo je to polymorfizmus?
  4. Rust vs Golang

Kategórie: