Hogyan használjuk a dinamikus kötést Java-ban?

Hogyan Hasznaljuk A Dinamikus Kotest Java Ban



A ' dinamikus kötés ” lehetővé teszi a polimorf viselkedést, ahol az objektum metódusmeghívása futás közben kerül meghatározásra az objektum tényleges típusa, nem pedig a referenciatípus alapján. Elősegíti a kód újrafelhasználhatóságát azáltal, hogy lehetővé teszi az alosztályok számára, hogy felülbírálják és megvalósítsák a szülőosztályban meghatározott metódusokat.

Ez a blog a dinamikus kötés használatát és megvalósítását mutatja be Java nyelven.

Hogyan használjuk a dinamikus kötést Java-ban?

A dinamikus kötés laza csatolást tesz lehetővé az objektumok között. Új alosztályok hozzáadásával segíti a funkciók egyszerű kiterjesztését, amelyek felülírják a metódusokat a meglévő kód módosítása nélkül. A dinamikus kötést széles körben használják futásidejű diszpécserhez, eseménykezeléshez vagy bővítményrendszerekhez.







Nézzünk meg néhány példát a részletes magyarázat érdekében:



1. példa: Dinamikus kötés megvalósítása



A dinamikus kötés használatával a programozók lehetővé tehetik a felhasználók számára, hogy testreszabják és felülbírálják az alapértelmezett viselkedéseket testreszabható alkalmazások létrehozásához. A gyakorlati megvalósítás érdekében nézzünk meg egy példát:





import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

nyilvános osztály DynBind {
public static void main ( Húr [ ] args ) {
Gaming gameType1 = új Cricket ( ) ;
Gaming gameType2 = új CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
osztály Gaming {
public void gameType ( ) {
System.out.println ( 'Fizikai vagy virtuális játékok' ) ;
}
}
osztály Cricket kiterjeszti Gaming {
@ Felülbírálás
public void gameType ( ) {
System.out.println ( 'A krikett fizikai játék' ) ;
}
}
osztályú CallofDuty kiterjeszti a Gaming szolgáltatást {
@ Felülbírálás
public void gameType ( ) {
System.out.println ( 'A CallofDuty egy virtuális játék' ) ;
}
}

A fenti kód magyarázata:



  • Először is az osztály DynBind ” jön létre, és két „” típusú objektum Szerencsejáték ” jelentik ki.
  • Ezután ezeket az objektumokat inicializálja az új ' Krikett ” és „ CallofDuty ” objektumok esetén ez az inicializálás a dinamikus kötést mutatja be. A hivatkozás típusa ' Szerencsejáték ' de a tényleges objektumtípusok ' Krikett ” és „ CallofDuty ”, ill.
  • Most ezeket az objektumokat arra használják, hogy meghívják a ' játék típus() ” függvényeket a gyermekosztályokban lévő függvény felülbírálásával.
  • Aztán a szülő' Szerencsejáték ' osztály deklarálva van, amely létrehozza és inicializálja a ' játék típus() ” funkció, amely ál szöveges üzenetet nyomtat.
  • Ezután két gyermekosztály jön létre a következő néven: Krikett ” és „ CallofDuty ”. Ezeket az osztályokat a szülő örökölte Szerencsejáték ' osztály.
  • Ezt követően a „ @Felülbírálás 'a kommentárt a szülő felülbírálására használják' Szerencsejáték '' nevű osztálymetódusok játék típus() ”.
  • Végül mindkét gyermekosztály felülírt metódusában eltérő álüzenet jelenik meg.

A végrehajtási szakasz vége után:

A kimenet azt mutatja, hogy a gyermekosztályok álüzenetei dinamikus kötés használatával jelennek meg a konzolon.

2. példa: Többszintű öröklődés megvalósítása

A dinamikus kötés többszintű öröklődés létrehozásához is megvalósítható. Ugyanannak a programnak két kódblokkja, az alábbiak szerint:

osztály Gaming {
public void gameType ( ) {
System.out.println ( 'Fizikai vagy virtuális játékok' ) ;
}
}
osztály Cricket kiterjeszti Gaming {
@ Felülbírálás
public void gameType ( ) {
System.out.println ( 'A krikett fizikai játék' ) ;
}
public void playFormat ( ) {
System.out.println ( 'A krikettnek különböző játékformátumai vannak' ) ;
}
}
osztályú CallofDuty kiterjeszti a Gaming szolgáltatást {
@ Felülbírálás
public void gameType ( ) {
System.out.println ( 'A CallofDuty egy virtuális játék' ) ;
}
public void gameMode ( ) {
System.out.println ( 'A CallofDuty több játékmóddal rendelkezik' ) ;
}
}
osztályú CricketGame kiterjeszti a Cricketet {
public void gameMode ( ) {
System.out.println ( 'A kriketten egyjátékos mód van' ) ;
}
}
osztályú CallofDutyGame kiterjeszti a CallofDuty-t {
}

A fenti kód magyarázata:

  • Először is a szülő Szerencsejáték ' osztály jön létre, és tartalmazza a ' játék típus() ” funkció, amely ál üzenetet tartalmaz.
  • Ezután két gyermekosztály, a „ Krikett ” és „ CallofDuty ' jön létre, mindkettő felülírja a '' nevű szülő osztályfüggvényt játék típus() ”.
  • Ezek az osztályok egy extra függvényt tartalmaznak ' playFormat() ” és „ játék mód() ” funkciókat, ill.
  • Ezután hozzon létre egy többszintű gyermeket '' CricketGame 'amelyet a gyerek meghosszabbít' Krikett ' osztály. Ez tartalmazza a ' játék mód() 'függvény, amelyet felülír a szülője' Krikett ' osztály.
  • Ezt követően a „ CallofDutyGame ' osztály gyermekként jön létre a ' CallofDuty ' osztály. Többszintű öröklődést hoz létre, és lehetővé teszi a dinamikus kötés funkcióját.

Most helyezze be a „ fő() ” módszer:

nyilvános osztály DynBind {
public static void main ( Húr [ ] args ) {
CallofDutyGame codg = új CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

CricketGame cricg = új CricketGame ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

A fenti kód magyarázata:

  • Először is egy tárgy a „ CallofDutyGame ” osztály jön létre, amely meghívja szülőosztályainak függvényeit.
  • Ugyanígy a „ CricketGame ” objektum deklarálva van, amely meghívja a szülő osztályfüggvényét, amely több szinten elérhető a hierarchiában.

A végrehajtási szakasz vége után:

A kimenet azt mutatja, hogy a többszintű öröklődés a Java dinamikus összerendelésével jön létre.

Következtetés

Java nyelven a „ dinamikus kötés ” olyan előnyöket kínál, mint a polimorfizmus, a kód újrafelhasználhatósága, a rugalmasság és a bővíthetőség. Az öröklési szabályok, a metódusok felülbírálása és a feltöltés szabályai szerint valósul meg. A dinamikus összerendelés futásidejű funkciókat is lehetővé tesz, és javítja a rugalmas és polimorf viselkedést az OOP-koncepcióban. Ez minden a dinamikus kötés használatáról és megvalósításáról szól a Java-ban.