Jak používat dynamické vazby v Javě?

Jak Pouzivat Dynamicke Vazby V Jave



' dynamická vazba ” umožňuje polymorfní chování, kdy je vyvolání metody objektu určeno za běhu na základě skutečného typu objektu, nikoli referenčního typu. Podporuje opětovnou použitelnost kódu tím, že umožňuje podtřídám přepisovat a poskytovat jejich implementaci metod definovaných v nadřazené třídě.

Tento blog demonstruje použití a implementaci dynamické vazby v Javě.

Jak používat dynamické vazby v Javě?

Dynamická vazba umožňuje volné spojení mezi předměty. Pomáhá při snadném rozšiřování funkčnosti přidáním nových podtříd, které potlačují metody bez úpravy stávajícího kódu. Dynamická vazba je široce využívána pro runtime dispečink, zpracování událostí nebo zásuvné systémy.







Pro podrobné vysvětlení si projdeme několik příkladů:



Příklad 1: Implementace dynamické vazby



Pomocí dynamické vazby mohou programátoři uživatelům umožnit přizpůsobit a přepsat výchozí chování a vytvářet přizpůsobitelné aplikace. Pro praktickou implementaci si projdeme příklad:





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

veřejná třída DynBind {
public static void main ( Tětiva [ ] argumenty ) {
Typ hry 1 = nový kriket ( ) ;
Herní gameType2 = nové CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
třída Gaming {
public void gameType ( ) {
System.out.println ( 'Fyzické nebo virtuální hry' ) ;
}
}
class Cricket rozšiřuje hry {
@ Přepsat
public void gameType ( ) {
System.out.println ( „Kriket je fyzická hra“ ) ;
}
}
třída CallofDuty rozšiřuje hry {
@ Přepsat
public void gameType ( ) {
System.out.println ( „CallofDuty je virtuální hra“ ) ;
}
}

Vysvětlení výše uvedeného kódu:



  • Nejprve třída ' DynBind “ je vytvořen a dva objekty typu “ Hraní “ jsou prohlášeny.
  • Dále jsou tyto objekty inicializovány pomocí nového „ Kriket ' a ' Volání povinnosti ” objektů, tato inicializace demonstruje dynamickou vazbu. Typ reference je „ Hraní “, ale skutečné typy objektů jsou “ Kriket ' a ' Volání povinnosti “, resp.
  • Nyní se tyto objekty používají k vyvolání „ druh hry() ” funkce přepsáním funkce v podřízených třídách.
  • Potom rodič' Hraní ” je deklarována třída, která vytváří a inicializuje “ druh hry() “, která vytiskne fiktivní textovou zprávu.
  • Dále se vytvoří dvě dětské třídy s názvem „ Kriket ' a ' Volání povinnosti “. Tyto třídy jsou zděděny od rodiče „ Hraní “třída.
  • Poté se „ @Přepsat „anotace se používá k přepsání nadřazeného prvku“ Hraní “metody třídy s názvem “ druh hry() “.
  • Nakonec se v obou přepsaných metodách podřízené třídy zobrazí jiná fiktivní zpráva.

Po skončení prováděcí fáze:

Výstup zobrazuje, že fiktivní zprávy podřízených tříd jsou zobrazeny na konzole pomocí dynamické vazby.

Příklad 2: Implementace víceúrovňové dědičnosti

Dynamická vazba může být také implementována pro vytvoření víceúrovňové dědičnosti. Dva bloky kódu stejného programu, jak je uvedeno níže:

třída hry {
public void gameType ( ) {
System.out.println ( 'Fyzické nebo virtuální hry' ) ;
}
}
class Cricket rozšiřuje hry {
@ Přepsat
public void gameType ( ) {
System.out.println ( „Kriket je fyzická hra“ ) ;
}
public void playingFormat ( ) {
System.out.println ( „Kriket má různé formáty hraní“ ) ;
}
}
třída CallofDuty rozšiřuje hry {
@ Přepsat
public void gameType ( ) {
System.out.println ( „CallofDuty je virtuální hra“ ) ;
}
herní režim veřejné neplatné ( ) {
System.out.println ( „CallofDuty má několik herních režimů“ ) ;
}
}
class CricketGame rozšiřuje kriket {
herní režim veřejné neplatné ( ) {
System.out.println ( „Kriket má režim jedné hry“ ) ;
}
}
třída CallofDutyGame rozšiřuje CallofDuty {
}

Vysvětlení výše uvedeného kódu:

  • Za prvé, rodič' Hraní “ je vytvořena třída a obsahuje „ druh hry() ” funkce, která obsahuje fiktivní zprávu.
  • Dále dvě dětské třídy s názvem „ Kriket ' a ' Volání povinnosti jsou vytvořeny ” a obě přepisují funkci rodičovské třídy s názvem “ druh hry() “.
  • Tyto třídy obsahují jednu extra funkci s názvem „ playingFormat() ' a ' herní mód() ” funkce, resp.
  • Poté vytvořte víceúrovňového potomka s názvem „ Kriketová hra “, který je rozšířen o dítě” Kriket “třída. Obsahuje „ herní mód() “funkce, která je přepsána svým rodičem” Kriket “třída.
  • Poté se „ CallofDutyGame “ třída je vytvořena jako dítě pro „ Volání povinnosti “třída. Vytváří víceúrovňovou dědičnost a umožňuje funkčnost dynamické vazby.

Nyní vložte „ hlavní() “ metoda:

veřejná třída DynBind {
public static void main ( Tětiva [ ] argumenty ) {
CallofDutyGame codg = nová hra CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

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

Vysvětlení výše uvedeného kódu:

  • Za prvé, předmět „ CallofDutyGame ” je vytvořena třída, která volá funkce svých nadřazených tříd.
  • Stejným způsobem, „ Kriketová hra ” je deklarován objekt, který volá svou nadřazenou funkci třídy, která je dostupná na více úrovních v hierarchii.

Po skončení prováděcí fáze:

Výstup ukazuje, že víceúrovňová dědičnost je vytvořena pomocí dynamické vazby v Javě.

Závěr

V Javě je „ dynamická vazba ” nabízí výhody, jako je polymorfismus, znovupoužitelnost kódu, flexibilita a rozšiřitelnost. Je implementován dodržováním pravidel dědičnosti, přepisování metod a odesílání. Dynamická vazba také umožňuje běhové funkce a zlepšuje flexibilní a polymorfní chování v konceptu OOPs. To je vše o použití a implementaci dynamické vazby v Javě.