Bevezetés a futásidejű polimorfizmusba a Java-ban

Ebben a cikkben megismerjük a futásidejű polimorfizmust a Java-ban. A „Poly” jelentése „sok”, a „morph” pedig „type”. Tehát a polimorfizmus kifejezés ugyanazt a dolgot jelöli a különféle típusoknál. Itt megtudhatja, hogy a Java hogyan archiválja a polimorfizmust futási idő alatt, ami azt jelenti, hogy az összeállítás után, de a kód futtatása előtt.

Szintaxis:

A Java futásiidejű polimorfizmusához a java alapvető szintaxisát és a kommentárokat kell követnie. @Override kommentár itt felhasználható annak kifejezésére, hogy melyik módszert szeretnénk felülbírálni.

Hogyan működik a futásidejű polimorfizmus a Java-ban?

A futásidejű polimorfizmus Javaban működik felülíró módszerrel. A metódus felülírása akkor fordul elő, amikor az objektumok ugyanazzal a metódusnévvel, argumentumokkal és típussal rendelkeznek, mint a szülő osztályban, de eltérő funkcionalitással. Ha egy gyermekosztályban van ilyen típusú módszer, akkor ezt felülbírált módszernek nevezzük.

Miért nevezik futásidejű polimorfizmusnak?

amikor a gyermek osztály felülbírált módszerét hívjuk szülőtípus-referencián keresztül (ezt a jelenséget a java-ban „Upcasting” -nak nevezzük), akkor az objektum típusa jelzi, hogy melyik módszert vagy funkcionalitást fogja meghívni. Ennek a döntésnek a meghozatalát követően a JVM a kód összeállítása után történik. Ezért futási idő polimorfizmusnak hívják.

Ezt dinamikus módszer továbbításnak is nevezik. Az okot úgy nevezték el, hogy a módszer működését dinamikusan dönti el a futásidő az objektumonként a JVM által

A késői kötésnek is nevezik, mert a módszer és az objektum kötésére, amely azt jelenti, hogy melyik objektum módszere jelenik meg, későn, azaz az összeállítás után döntenek.

Szabályok és korlátozások a Runtim e polimorfizmusban

Az alábbiakban bemutatjuk a futásidejű polimorfizmus néhány szabályát és korlátozását:

A futásidejű polimorfizmus szabályai

  • A gyermek- és a szülőosztály módszereinek azonos névvel kell rendelkezniük.
  • A gyermek- és a szülőosztály módszereinek azonos paraméterrel kell rendelkezni.
  • IS-A kapcsolat kötelező (öröklés).

A futásidejű polimorfizmus korlátozásai

  • Nem lehet felülírni a szülői osztály magánmódszereit.
  • A végleges módszereket nem szabad felülírni.
  • A statikus módszereket nem szabad felülírni.

Példák a futásidejű polimorfizmusra a Java-ban

Itt tárgyalunk néhány futóidejű polimorfizmus kódpéldáját.

1. példa

Ebben a példában megmutatjuk, hogyan jeleníti meg a metódus () a különféle üzeneteket attól függően, hogy milyen típusú objektumhoz van társítva. Ha a „Szülők” típushoz van társítva, akkor a szülői osztály üzeneteit jeleníti meg. Míg a „Gyerekek” típushoz társítva, akkor az üzeneteket jeleníti meg a gyermekosztályból.

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
)
)

Kimenet:

2. példa

Vegyünk példát a futási idő polimorfizmusára többszintű öröklés esetén. Ebben a példában az öröklés két szintjét vettük figyelembe. Ebben a példában megmutatjuk, hogy a sip () módszer hogyan jeleníti meg a különböző üzeneteket, attól függően, hogy melyik objektumtípushoz van társítva. Ha az „Emberi” típushoz van társítva, akkor egy szülőosztály üzeneteit jeleníti meg. Míg amikor az „Ember” típushoz van társítva, akkor a gyermekkori üzeneteit jeleníti meg. Az öröklés második szintjén, amikor hozzákapcsolódik a „baba” típushoz, ismét szülők gyermekosztályának üzeneteit mutatja, amely „ember” osztályba tartozik.

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
)
)

Kimenet:

3. példa

Vegyünk egy újabb példát a futási idő polimorfizmusáról többszintű öröklés esetén. Ebben a példában az öröklés három szintjét vesszük figyelembe. Ebben a példában megmutatjuk, hogy a metódus funkció () hogyan mutat különféle funkciókat attól függően, hogy melyik objektumtípushoz van társítva. Ha az „operációs rendszer” típushoz van társítva, akkor egy szülőosztály üzeneteit jeleníti meg. Míg amikor a „DOS” típushoz van társítva, akkor a gyermekkori üzeneteit jeleníti meg. Az öröklés második szintjén ismét, amikor a „Windows” típushoz van társítva, üzeneteket mutat a szülő gyermekosztályából, amely „DOS” osztály. Az öröklés harmadik szintjén, amikor a „WindowsMobile” típushoz van társítva, üzeneteket mutat a szülő gyermekosztályából, amely a „Windows” osztály.

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
)
)

Kimenet:

Következtetés

Ez befejezi a „Futásidejű polimorfizmus Java-ban” című tanulásunk befejezését. Írja be a fenti példákban említett kódokat a java fordítóba, és ellenőrizze a kimenetet. A kódok elsajátítása hiányos, ha nem írja be a kódot egyedül.

Ajánlott cikkek

Ez egy útmutató a Java futásidejű polimorfizmusához. Itt a példákkal tárgyaljuk, hogyan működik a futásidejű polimorfizmus java-ban. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. Statikus kulcsszó a Java-ban
  2. A Java alapon érvényes
  3. Mi az a polimorfizmus?
  4. Rozsda vs Golang

Kategória: