Kako koristiti dinamičko uvezivanje u Javi?

Kako Koristiti Dinamicko Uvezivanje U Javi



' dinamičko uvezivanje ” dopušta polimorfno ponašanje, gdje se pozivanje metode objekta određuje tijekom izvođenja na temelju stvarnog tipa objekta, a ne referentnog tipa. Promiče mogućnost ponovne upotrebe koda dopuštajući potklasama da nadjačaju i daju svoju implementaciju metoda definiranih u nadređenoj klasi.

Ovaj blog demonstrira upotrebu i implementaciju dinamičkog vezivanja u Javi.

Kako koristiti dinamičko uvezivanje u Javi?

Dinamičko uvezivanje omogućuje labavu spregu između objekata. Pomaže u jednostavnom proširenju funkcionalnosti dodavanjem novih podklasa koje nadjačavaju metode bez mijenjanja postojećeg koda. Dinamičko vezanje naširoko se koristi za otpremu vremena izvođenja, rukovanje događajima ili sustave dodataka.







Prođimo kroz nekoliko primjera za detaljno objašnjenje:



Primjer 1: Implementacija dinamičkog povezivanja



Korištenjem dinamičkog povezivanja, programeri mogu dopustiti korisnicima da prilagode i nadjačaju zadana ponašanja za izradu prilagodljivih aplikacija. Za praktičnu primjenu prođimo kroz primjer:





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

javna klasa DynBind {
public static void main ( Niz [ ] args ) {
Gaming gameType1 = novi kriket ( ) ;
Gaming gameType2 = novi CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
klasa Gaming {
public void gameType ( ) {
System.out.println ( 'Fizičke ili virtualne igre' ) ;
}
}
klasa Cricket proširuje Gaming {
@ Nadjačavanje
public void gameType ( ) {
System.out.println ( 'Kriket je fizička igra' ) ;
}
}
klasa CallofDuty proširuje Gaming {
@ Nadjačavanje
public void gameType ( ) {
System.out.println ( 'CallofDuty je virtualna igra' ) ;
}
}

Objašnjenje gornjeg koda:



  • Prvo, razred ' DynBind ” kreira se i dva objekta tipa „ Igre ” proglašavaju se.
  • Zatim se ovi objekti inicijaliziraju s novim ' Kriket ' i ' Poziv dužnosti ” objekata, ova inicijalizacija pokazuje dinamičko vezanje. Tip reference je ' Igre ', ali stvarni tipovi objekata su ' Kriket ' i ' Poziv dužnosti ”, odnosno.
  • Sada se ti objekti koriste za pozivanje ' gameType() ” funkcionira nadjačavanjem funkcije u podređenim klasama.
  • Zatim, roditelj “ Igre ” deklarirana je klasa koja stvara i inicijalizira gameType() ”, koja ispisuje lažnu tekstualnu poruku.
  • Zatim se kreiraju dvije podređene klase s imenom ' Kriket ' i ' Poziv dužnosti ”. Ove klase su naslijeđene od roditelja ' Igre ” razred.
  • Nakon toga, ' @Nadjačaj ' napomena se koristi za nadjačavanje nadređene ' Igre ' metode klase pod nazivom ' gameType() ”.
  • Na kraju se prikazuje različita lažna poruka u obje nadjačane metode podređene klase.

Nakon završetka faze izvršenja:

Izlaz prikazuje da su lažne poruke podređenih klasa prikazane na konzoli pomoću dinamičkog vezivanja.

Primjer 2: Implementacija višerazinskog nasljeđivanja

Dinamičko vezanje također se može implementirati za stvaranje nasljeđivanja na više razina. Dva bloka koda istog programa kao što je prikazano u nastavku:

klasa Gaming {
public void gameType ( ) {
System.out.println ( 'Fizičke ili virtualne igre' ) ;
}
}
klasa Cricket proširuje Gaming {
@ Nadjačavanje
public void gameType ( ) {
System.out.println ( 'Kriket je fizička igra' ) ;
}
public void playingFormat ( ) {
System.out.println ( 'Kriket ima različite formate igre' ) ;
}
}
klasa CallofDuty proširuje Gaming {
@ Nadjačavanje
public void gameType ( ) {
System.out.println ( 'CallofDuty je virtualna igra' ) ;
}
public void gameMode ( ) {
System.out.println ( 'CallofDuty ima više načina igre' ) ;
}
}
klasa CricketGame proširuje Cricket {
public void gameMode ( ) {
System.out.println ( 'Kriket ima način pojedinačne igre' ) ;
}
}
klasa CallofDutyGame proširuje CallofDuty {
}

Objašnjenje gornjeg koda:

  • Prvo, roditelj “ Igre ' stvorena je klasa i uključuje ' gameType() ” funkcija koja sadrži lažnu poruku.
  • Zatim, dvije podređene klase pod nazivom ' Kriket ' i ' Poziv dužnosti ' se stvaraju, a obje nadjačavaju funkciju nadređene klase pod nazivom ' gameType() ”.
  • Ove klase sadrže jednu dodatnu funkciju pod nazivom ' playingFormat() ' i ' mod igre() ” funkcije.
  • Zatim stvorite dijete s više razina pod nazivom ' CricketGame ' koje je produžilo dijete ' Kriket ” razred. Sadrži ' mod igre() 'funkcija koju nadjačava roditelj' Kriket ” razred.
  • Nakon toga, ' CallofDutyGame ' klasa je stvorena kao dijete za ' Poziv dužnosti ” razred. Stvara višerazinsko nasljeđivanje i omogućuje funkcionalnost dinamičkog povezivanja.

Sada umetnite ' glavni() ” metoda:

javna klasa DynBind {
public static void main ( Niz [ ] args ) {
CallofDutyGame codg = nova CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

CricketGame cricg = nova igra kriketa ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

Objašnjenje gornjeg koda:

  • Prvo, objekt ' CallofDutyGame ” kreirana je klasa koja poziva funkcije svojih nadređenih klasa.
  • Na isti način, ' CricketGame ” deklarira se objekt koji poziva svoju roditeljsku funkciju klase koja je dostupna na više razina u hijerarhiji.

Nakon završetka faze izvršenja:

Izlaz pokazuje da se višerazinsko nasljeđivanje stvara korištenjem dinamičkog vezivanja u Javi.

Zaključak

U Javi, ' dinamičko uvezivanje ” nudi prednosti kao što su polimorfizam, mogućnost ponovne upotrebe koda, fleksibilnost i proširivost. Implementira se slijedeći pravila nasljeđivanja, nadjačavanja metode i upcastiranja. Dinamičko vezanje također omogućuje funkcije vremena izvođenja i poboljšava fleksibilno i polimorfno ponašanje u OOP konceptu. To je sve o korištenju i implementaciji dinamičkog povezivanja u Javi.