Ako používať dynamické viazanie v jazyku Java?

Ako Pouzivat Dynamicke Viazanie V Jazyku Java



' dynamická väzba ” umožňuje polymorfné správanie, kde je vyvolanie metódy objektu určené za behu na základe skutočného typu objektu, a nie referenčného typu. Podporuje opätovnú použiteľnosť kódu tým, že umožňuje podtriedam prepísať a poskytovať ich implementáciu metód definovaných v nadradenej triede.

Tento blog demonštruje použitie a implementáciu dynamickej väzby v jazyku Java.

Ako používať dynamické viazanie v jazyku Java?

Dynamická väzba umožňuje voľné spojenie medzi predmetmi. Pomáha pri jednoduchom rozšírení funkčnosti pridaním nových podtried, ktoré prepíšu metódy bez úpravy existujúceho kódu. Dynamická väzba je široko používaná pre runtime dispečing, obsluhu udalostí alebo systémy doplnkov.







Prejdeme si niekoľko príkladov na podrobné vysvetlenie:



Príklad 1: Implementácia dynamického viazania



Pomocou dynamickej väzby môžu programátori umožniť používateľom prispôsobiť a prepísať predvolené správanie, aby vytvorili prispôsobiteľné aplikácie. Pre praktickú implementáciu si uveďme príklad:





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

verejná trieda DynBind {
public static void main ( Reťazec [ ] args ) {
Typ hry 1 = nový kriket ( ) ;
Herný gameType2 = nový CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
trieda Hranie {
public void gameType ( ) {
System.out.println ( 'Fyzické alebo virtuálne hry' ) ;
}
}
trieda Kriket rozširuje hry {
@ Prepísať
public void gameType ( ) {
System.out.println ( „Kriket je fyzická hra“ ) ;
}
}
triedy CallofDuty rozširuje hry {
@ Prepísať
public void gameType ( ) {
System.out.println ( „CallofDuty je virtuálna hra“ ) ;
}
}

Vysvetlenie vyššie uvedeného kódu:



  • Po prvé, trieda „ DynBind “ sa vytvorí a dva objekty typu “ Hranie “ sú vyhlásené.
  • Ďalej sa tieto objekty inicializujú s novým „ Kriket “ a „ CallofDuty ” objekty, táto inicializácia demonštruje dynamickú väzbu. Referenčný typ je „ Hranie “, ale skutočné typy objektov sú “ Kriket “ a „ CallofDuty “, resp.
  • Teraz sa tieto objekty používajú na vyvolanie „ gameType() ” funkcie prepísaním funkcie v podradených triedach.
  • Potom rodič „ Hranie ” je deklarovaná trieda, ktorá vytvára a inicializuje “ gameType() “, ktorá vytlačí fiktívnu textovú správu.
  • Ďalej sa vytvoria dve detské triedy s názvom „ Kriket “ a „ CallofDuty “. Tieto triedy sú zdedené od rodiča „ Hranie ' trieda.
  • Potom sa „ @Prepísať “anotácia sa používa na prepísanie rodiča” Hranie “metódy triedy s názvom “ gameType() “.
  • Nakoniec sa v oboch prepísaných metódach podradenej triedy zobrazí iná falošná správa.

Po ukončení vykonávacej fázy:

Výstup zobrazuje, že fiktívne správy podradených tried sa zobrazujú na konzole pomocou dynamickej väzby.

Príklad 2: Implementácia viacúrovňovej dedičnosti

Dynamická väzba môže byť implementovaná aj na vytvorenie viacúrovňovej dedičnosti. Dva bloky kódu toho istého programu, ako je uvedené nižšie:

trieda Hranie {
public void gameType ( ) {
System.out.println ( 'Fyzické alebo virtuálne hry' ) ;
}
}
trieda Kriket rozširuje hry {
@ Prepísať
public void gameType ( ) {
System.out.println ( „Kriket je fyzická hra“ ) ;
}
verejné neplatné prehrávanieFormát ( ) {
System.out.println ( „Kriket má rôzne formáty hrania“ ) ;
}
}
triedy CallofDuty rozširuje hry {
@ Prepísať
public void gameType ( ) {
System.out.println ( „CallofDuty je virtuálna hra“ ) ;
}
verejný režim hry ( ) {
System.out.println ( „CallofDuty má viacero herných režimov“ ) ;
}
}
trieda CricketGame rozširuje kriket {
verejný režim hry ( ) {
System.out.println ( „Kriket má režim jednej hry“ ) ;
}
}
class CallofDutyGame rozširuje CallofDuty {
}

Vysvetlenie vyššie uvedeného kódu:

  • Po prvé, rodič' Hranie Vytvorí sa trieda “, ktorá obsahuje „ gameType() “, ktorá obsahuje fiktívnu správu.
  • Ďalej dve detské triedy s názvom „ Kriket “ a „ CallofDuty ” sú vytvorené, pričom obe prepíšu funkciu nadradenej triedy s názvom “ gameType() “.
  • Tieto triedy obsahujú jednu extra funkciu s názvom „ PlayFormat() “ a „ hrací mód() “funkcie, resp.
  • Potom vytvorte viacúrovňové dieťa s názvom „ Kriketová hra “, ktorý je rozšírený o dieťa” Kriket ' trieda. Obsahuje „ hrací mód() 'funkcia, ktorá je prepísaná nadradenou funkciou' Kriket ' trieda.
  • Potom sa „ CallofDutyGame “ trieda je vytvorená ako dieťa pre „ CallofDuty ' trieda. Vytvára viacúrovňové dedičstvo a umožňuje funkčnosť dynamickej väzby.

Teraz vložte „ Hlavná() “ metóda:

verejná trieda DynBind {
public static void main ( Reťazec [ ] args ) {
CallofDutyGame codg = nová hra CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

Kriketová hra cricg = nová kriketová hra ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

Vysvetlenie vyššie uvedeného kódu:

  • Po prvé, predmet „ CallofDutyGame ” je vytvorená trieda, ktorá volá funkcie svojich rodičovských tried.
  • Rovnakým spôsobom „ Kriketová hra ” je deklarovaný objekt, ktorý volá funkciu svojej nadradenej triedy, ktorá je dostupná na viacerých úrovniach v hierarchii.

Po ukončení vykonávacej fázy:

Výstup ukazuje, že viacúrovňová dedičnosť sa vytvára pomocou dynamickej väzby v jazyku Java.

Záver

V Jave je „ dynamická väzba ” ponúka výhody ako polymorfizmus, opätovná použiteľnosť kódu, flexibilita a rozšíriteľnosť. Implementuje sa dodržiavaním pravidiel dedenia, prepisovania metódy a prenosu. Dynamická väzba tiež umožňuje runtime funkcie a zlepšuje flexibilné a polymorfné správanie v koncepte OOPs. To je všetko o použití a implementácii dynamickej väzby v Jave.