Cum se utilizează legarea dinamică în Java?

Cum Se Utilizeaza Legarea Dinamica In Java



legarea dinamică ” permite comportamentul polimorf, în care invocarea unei metode a unui obiect este determinată în timpul rulării pe baza tipului real al obiectului, mai degrabă decât a tipului de referință. Promovează reutilizarea codului, permițând subclaselor să suprascrie și să furnizeze implementarea lor a metodelor definite în clasa părinte.

Acest blog demonstrează utilizarea și implementarea legării dinamice în Java.

Cum se utilizează legarea dinamică în Java?

Legarea dinamică permite cuplarea liberă între obiecte. Ajută la extinderea ușoară a funcționalității prin adăugarea de noi subclase care suprascriu metodele fără a modifica codul existent. Legarea dinamică este utilizată pe scară largă pentru expedierea în timpul execuției, gestionarea evenimentelor sau sistemele de pluginuri.







Să trecem prin câteva exemple pentru o explicație detaliată:



Exemplul 1: Implementarea Legăturii dinamice



Folosind legarea dinamică, programatorii pot permite utilizatorilor să personalizeze și să anuleze comportamentele implicite pentru a construi aplicații personalizabile. Pentru implementare practică, să trecem printr-un exemplu:





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

clasă publică DynBind {
public static void main ( Şir [ ] argumente ) {
Gaming gameType1 = nou Cricket ( ) ;
GameType2 = nou CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
}
}
Jocuri de clasă {
public void gameType ( ) {
System.out.println ( „Jocuri fizice sau virtuale” ) ;
}
}
clasa Cricket extinde jocurile {
@ Trece peste
public void gameType ( ) {
System.out.println ( „Crichetul este un joc fizic” ) ;
}
}
clasa CallofDuty extinde Gaming {
@ Trece peste
public void gameType ( ) {
System.out.println ( „CallofDuty este un joc virtual” ) ;
}
}

Explicația codului de mai sus:



  • În primul rând, clasa „ DynBind ” este creat și două obiecte de tipul „ Jocuri ” se declară.
  • Apoi, aceste obiecte sunt inițializate cu noul „ Cricket ' și ' Chemarea la datorie ” obiecte, această inițializare demonstrează legarea dinamică. Tipul de referință este „ Jocuri ” dar tipurile reale de obiecte sunt „ Cricket ' și ' Chemarea la datorie ”, respectiv.
  • Acum, aceste obiecte sunt utilizate pentru a invoca „ tip de joc() ” funcționează prin suprascrierea funcției în clasele copil.
  • Apoi, părintele „ Jocuri ” este declarată clasa care creează și inițializează “ tip de joc() ”, care tipărește un mesaj text fals.
  • În continuare, două clase copii sunt create cu numele „ Cricket ' și ' Chemarea la datorie ”. Aceste clase sunt moștenite de la părinte „ Jocuri ” clasa.
  • După aceea, „ @Trece peste ” adnotarea este utilizată pentru a înlocui părintele ” Jocuri „metode de clasă numite „ tip de joc() ”.
  • În cele din urmă, un mesaj fals diferit este afișat în ambele metode suprascrise pentru clasele copil.

După încheierea fazei de execuție:

Ieșirea arată că mesajele fictive ale claselor copil sunt afișate pe consolă folosind legarea dinamică.

Exemplul 2: Implementarea moștenirii pe mai multe niveluri

Legarea dinamică poate fi implementată și pentru crearea moștenirii pe mai multe niveluri. Două blocuri de cod ale aceluiași program, așa cum se arată mai jos:

Jocuri de clasă {
public void gameType ( ) {
System.out.println ( „Jocuri fizice sau virtuale” ) ;
}
}
clasa Cricket extinde jocurile {
@ Trece peste
public void gameType ( ) {
System.out.println ( „Crichetul este un joc fizic” ) ;
}
public void playFormat ( ) {
System.out.println ( „Cricketul are diferite formate de joc” ) ;
}
}
clasa CallofDuty extinde Gaming {
@ Trece peste
public void gameType ( ) {
System.out.println ( „CallofDuty este un joc virtual” ) ;
}
Mod de joc public void ( ) {
System.out.println ( „CallofDuty are mai multe moduri de joc” ) ;
}
}
clasa CricketGame extinde Cricket {
Mod de joc public void ( ) {
System.out.println ( „Cricket are un singur mod de joc” ) ;
}
}
clasa CallofDutyGame extinde CallofDuty {
}

Explicația codului de mai sus:

  • În primul rând, părintele „ Jocuri ” este creată și include ” tip de joc() ” care conține un mesaj fals.
  • În continuare, două clase de copii numite „ Cricket ' și ' Chemarea la datorie ” sunt create, ambele suprascriind funcția de clasă părinte numită „ tip de joc() ”.
  • Aceste clase conțin o funcție suplimentară numită „ redare format() ' și ' Mod de joc() ” funcții, respectiv.
  • Apoi, creați un copil cu mai multe niveluri numit „ Joc de Cricket „care este prelungit de către copil” Cricket ” clasa. Acesta conține „ Mod de joc() ”funcție care este suprascrisă de părintele ei” Cricket ” clasa.
  • După aceea, „ CallofDutyGame ” clasa este creată ca copil pentru ” Chemarea la datorie ” clasa. Acesta creează o moștenire pe mai multe niveluri și pentru a activa funcționalitatea de legare dinamică.

Acum, introduceți „ principal() ” metoda:

clasă publică DynBind {
public static void main ( Şir [ ] argumente ) {
CallofDutyGame codg = nou CallofDutyGame ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

Joc de Cricket cricg = nou CricketGame ( ) ;
cricg.gameType ( ) ;
cricg.playingFormat ( ) ;
cricg.gameMode ( ) ;
}
}

Explicația codului de mai sus:

  • În primul rând, un obiect al „ CallofDutyGame ” este creată clasa care apelează funcțiile claselor sale părinte.
  • În același mod, „ Joc de Cricket ” este declarat obiectul care își apelează funcția de clasă părinte care este disponibilă la mai multe niveluri în ierarhie.

După încheierea fazei de execuție:

Rezultatul arată că moștenirea pe mai multe niveluri este creată folosind legarea dinamică în Java.

Concluzie

În Java, „ legarea dinamică ” oferă beneficii precum polimorfismul, reutilizarea codului, flexibilitatea și extensibilitatea. Este implementat prin respectarea regulilor de moștenire, înlocuirea metodei și upcasting. Legarea dinamică permite, de asemenea, funcții de rulare și îmbunătățește comportamentul flexibil și polimorf în conceptul OOP. Acesta este totul despre utilizarea și implementarea legării dinamice în Java.