Kuinka käyttää dynaamista sidontaa Javassa?

Kuinka Kayttaa Dynaamista Sidontaa Javassa



' dynaaminen sidonta ” sallii polymorfisen käyttäytymisen, jossa objektin menetelmän kutsu määritetään ajon aikana objektin todellisen tyypin perusteella viitetyypin sijaan. Se edistää koodin uudelleenkäytettävyyttä sallimalla alaluokkien ohittaa ja toteuttaa emoluokissa määritellyt menetelmät.

Tämä blogi esittelee dynaamisen sidonnan käyttöä ja toteutusta Javassa.

Kuinka käyttää dynaamista sidontaa Javassa?

Dynaaminen sidonta mahdollistaa löysän kytkennän objektien välillä. Se auttaa toiminnallisuuden helpossa laajentamisessa lisäämällä uusia alaluokkia, jotka ohittavat menetelmät muuttamatta olemassa olevaa koodia. Dynaamista sidontaa käytetään laajalti ajonaikaisessa jakelussa, tapahtumien käsittelyssä tai laajennusjärjestelmissä.







Käydään läpi muutama esimerkki yksityiskohtaista selitystä varten:



Esimerkki 1: Dynaamisen sidonnan käyttöönotto



Käyttämällä dynaamista sidontaa ohjelmoijat voivat antaa käyttäjien mukauttaa ja ohittaa oletuskäyttäytymisen muokattavien sovellusten rakentamiseksi. Käytännön toteutusta varten käymme läpi esimerkin:





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

julkinen luokka DynBind {
julkinen static void main ( merkkijono [ ] args ) {
Pelipeli Tyyppi1 = uusi kriketti ( ) ;
Pelityyppi2 = uusi CallofDuty ( ) ;
pelityyppi1.pelityyppi ( ) ;
pelityyppi2.pelityyppi ( ) ;
}
}
luokan pelaamista {
julkinen void pelityyppi ( ) {
System.out.println ( 'Fyysiset tai virtuaaliset pelit' ) ;
}
}
luokka Cricket laajentaa pelaamista {
@ Ohittaa
julkinen void pelityyppi ( ) {
System.out.println ( 'Krketti on fyysinen peli' ) ;
}
}
luokka CallofDuty laajentaa pelaamista {
@ Ohittaa
julkinen void pelityyppi ( ) {
System.out.println ( 'CallofDuty on virtuaalipeli' ) ;
}
}

Selitys yllä olevalle koodille:



  • Ensin luokka ' DynBind ' luodaan ja kaksi objektia tyyppiä ' Pelaaminen ” julistetaan.
  • Seuraavaksi nämä objektit alustetaan uudella ' Kriketti ' ja ' Velvollisuuden kutsu '-objekteja, tämä alustus osoittaa dynaamisen sidoksen. Viitetyyppi on ' Pelaaminen ' mutta todelliset objektityypit ovat ' Kriketti ' ja ' Velvollisuuden kutsu ”, vastaavasti.
  • Nyt näitä objekteja käytetään kutsumaan ' Pelityyppi() ” toimii ohittamalla funktion lapsiluokissa.
  • Sitten vanhempi' Pelaaminen 'luokka julistetaan, joka luo ja alustaa ' Pelityyppi() ”-toiminto, joka tulostaa tyhjän tekstiviestin.
  • Seuraavaksi luodaan kaksi lapsiluokkaa nimellä ' Kriketti ' ja ' Velvollisuuden kutsu ”. Nämä luokat on peritty vanhemmalta ' Pelaaminen ”luokka.
  • Sen jälkeen ' @Ohittaa 'merkintää käytetään ohittamaan vanhemman' Pelaaminen 'luokkamenetelmät nimeltä' Pelityyppi() ”.
  • Lopulta molemmissa aliluokan ohitetuissa menetelmissä näytetään erilainen valeviesti.

Toteutusvaiheen päätyttyä:

Tulos näyttää, että lapsiluokkien valeviestit näytetään konsolissa käyttämällä dynaamista sidontaa.

Esimerkki 2: Monitasoisen perinnän toteuttaminen

Dynaaminen sidonta voidaan toteuttaa myös monitasoisen perinnön luomiseen. Saman ohjelman kaksi koodilohkoa alla olevan kuvan mukaisesti:

luokan pelaamista {
julkinen void pelityyppi ( ) {
System.out.println ( 'Fyysiset tai virtuaaliset pelit' ) ;
}
}
luokka Cricket laajentaa pelaamista {
@ Ohittaa
public void gameType ( ) {
System.out.println ( 'Krketti on fyysinen peli' ) ;
}
public void playformat ( ) {
System.out.println ( 'Krketillä on erilaisia ​​pelimuotoja' ) ;
}
}
luokka CallofDuty laajentaa pelaamista {
@ Ohittaa
public void gameType ( ) {
System.out.println ( 'CallofDuty on virtuaalipeli' ) ;
}
public void gameMode ( ) {
System.out.println ( 'CallofDutylla on useita pelitiloja' ) ;
}
}
luokan CricketGame laajentaa krikettiä {
public void gameMode ( ) {
System.out.println ( 'Krketillä on yhden pelin tila' ) ;
}
}
luokan CallofDutyGame laajentaa CallofDutya {
}

Selitys yllä olevalle koodille:

  • Ensinnäkin vanhempi' Pelaaminen '-luokka luodaan ja se sisältää ' Pelityyppi() ”-toiminto, joka sisältää valeviestin.
  • Seuraavaksi kaksi lapsiluokkaa nimeltä ' Kriketti ' ja ' Velvollisuuden kutsu ' luodaan, molemmat ohittavat emoluokan funktion ' Pelityyppi() ”.
  • Nämä luokat sisältävät yhden ylimääräisen funktion nimeltä ' playFormat() ' ja ' pelitila() ”-toiminnot.
  • Luo sitten monitasoinen lapsi nimeltä ' Krikettipeli 'joka on pidennetty lapsella' Kriketti ”luokka. Se sisältää ' pelitila() 'toiminto, jonka emo on ohittanut' Kriketti ”luokka.
  • Sen jälkeen ' CallofDutyGame 'luokka on luotu lapsena ' Velvollisuuden kutsu ”luokka. Se luo monitasoisen perinnön ja mahdollistaa dynaamisen sitomisen toiminnallisuuden.

Lisää nyt ' pää() 'menetelmä:

julkinen luokka DynBind {
julkinen static void main ( merkkijono [ ] args ) {
CallofDutyGame codg = uusi CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

Krikettipeli cricg = uusi krikettipeli ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

Selitys yllä olevalle koodille:

  • Ensinnäkin ' CallofDutyGame Luodaan luokka, joka kutsuu yläluokkiensa funktioita.
  • Samalla tavalla ' Krikettipeli ”-objekti on ilmoitettu, joka kutsuu sen emoluokkafunktiota, joka on saatavilla hierarkian monitasolla.

Toteutusvaiheen päätyttyä:

Tulos osoittaa, että monitasoinen periytyminen luodaan Javassa käyttämällä dynaamista sidontaa.

Johtopäätös

Javassa ' dynaaminen sidonta ” tarjoaa etuja, kuten polymorfismin, koodin uudelleenkäytettävyyden, joustavuuden ja laajennettavuuden. Se toteutetaan noudattamalla periytymissääntöjä, menetelmän ohittamista ja upcastingia. Dynaaminen sidonta mahdollistaa myös ajonaikaiset toiminnot ja parantaa joustavaa ja polymorfista käyttäytymistä OOPs-konseptissa. Siinä on kyse dynaamisen sidonnan käytöstä ja toteutuksesta Javassa.