Diferența dintre legarea statică și legarea dinamică

Diferența cheie - statică Legare vs. legare dinamică
 

Limbile de programare precum Java și C # suportă programarea orientată pe obiecte (OOP). Acesta permite construirea de software folosind obiecte. Există multe obiecte într-un sistem software sau într-un program. Aceste obiecte au atribute și metode. Atributele descriu caracteristicile. Metodele descriu acțiunile care pot fi efectuate de obiect. Datele sunt transmise prin obiecte folosind metode. Valorile solicitate sunt trimise prin apeluri metodice cu parametri. Implementarea reală a metodei este în definiția metodei. Există o legătură între o chemare a metodei și o definiție a metodei. Este cunoscut ca legare. Există două tipuri de legături. Acestea sunt legare statică și legare dinamică. diferența cheie între legarea statică și legarea dinamică este asta, în legarea statică, legarea este rezolvată la timpul de compilare, în timp ce legarea dinamică este rezolvată la timpul de execuție, care este timpul real de execuție. Acest articol discută diferența dintre aceste două mecanisme obligatorii.

CUPRINS

1. Prezentare generală și diferență cheie
2. Ce este Static Binding
3. Ce este Dynamic Binding
4. Asemănări între legarea statică și legarea dinamică
5. Comparație comparativă comparativă - legare statică vs. legare dinamică în formă tabulară
6. rezumat

Ce este Static Binding?

Legarea este legătura dintre o chemare a metodei și definițiile metodei.

Figura 01: Legarea statică și legarea dinamică

Consultați programul de mai jos scris în Java.

clasa publica A

public void method1 ()

System.out.println ( „Metoda 1“);

public void method2 ()

System.out.println ( „Method2“);

public static void principal (String [] args)

A obj = nou A ();

obj.method1 ();

obj.method2 ();

Conform programului de mai sus, se creează un obiect de tip A. Apoi se cheamă metoda1 și metoda2. Identificarea metodei care ar trebui să solicite execuția este cunoscută ca obligatorie. Instrucțiunea obj.method1 () va apela method1 () și obj.method2 () va apela method2 (). Această legătură este obligatorie.

În legarea statică, legarea este rezolvată la momentul compilării de către compilator. Este, de asemenea, cunoscut sub numele de legarea timpurie. Legarea se întâmplă înainte de a începe un program. Legarea statică survine la supraîncărcarea metodei. Consultați programul de mai jos scris în Java.

public void Calculul

void public sum (int x, int y)

System.out.println ("suma este", x + y);

suma voidă publică (dublu x, dublu y)

System.out.println ("suma este", x + y);

public static void principal (String [] args)

Calcul cal = calcul nou ();

cal.sum (2,3);

cal.sum (5.1, 6.4);

Conform programului de mai sus, atunci când trecem cele două numere întregi, se va invoca metoda cu două numere întregi. Când treceți două valori duble, se va invoca metoda corespunzătoare a două valori duble. Acest proces de legare are loc în momentul compilării. Compilatorul știe că ar trebui să apeleze metoda sum cu două valori întregi pentru cal.sum (2,3). Pentru cal (5.1,6.4), se va numi metoda sum cu doua valori duble. Toate informațiile necesare sunt cunoscute înainte de timpul de execuție, astfel încât acestea sporesc eficiența programului și viteza de execuție.

Ce este Dynamic Binding?

În Dynamic Binding, compilatorul nu rezolvă legarea la momentul compilării. Legarea are loc la timpul de execuție. Este, de asemenea, cunoscut sub numele de legarea târzie. Legarea dinamică are loc în suprimarea metodei. Consultați programul scris în Java.

clasa publică Shape ()

void draw public ()

System.out.println ("Draw shape");

clasa publică () Cercul () extinde forma

void draw public ()

System.out.println ("Desen cerc");

clasa public triunghi () extinde forma

void draw public ()

System.out.println ("Desenați triunghi");

public class Test

public static void principal (String [] args)

Formă s;

s = formă nouă ();

s.draw ();

s = cerc nou ();

s.draw ();

s = triunghi nou ();

s.draw ();

În conformitate cu programul de mai sus, clasa Shape are o metodă de tragere (). Cercul de clasă și triunghiul de clasă extind clasa Shape. Cercul de clasă și triunghiul de clasă pot moșteni atributele și metodele clasei Shape. Prin urmare, clasa Shape este clasa super clasa sau parentala. Cercul de clasă și triunghiul de clasă sunt subclase sau clase derivate. Aceste clase au, de asemenea, metoda draw () cu implementările proprii. Prin urmare, metoda draw () din clasa super este suprascrisă.

În metoda principală, sunt invocate diferite obiecte. Există o variabilă de referință de tip Shape, care este s. Apoi, s invocă metoda în funcție de clasa specifică. La compilarea timpului, compilatorul va trimite doar metoda de tragere super clasa. Când începe execuția reală, va duce la executarea diferitelor metode de tragere. Mai întâi, s va indica obiectul tipului Shape. Prin urmare, va invoca metoda draw în clasa Shape. Apoi s va indica obiectul de tip Cerc și va invoca metoda de tragere a clasei Circle. În cele din urmă, s se referă la obiectul triunghiului de tip și va invoca metoda de tragere în triunghi. Chiar dacă variabila de referință este de tip Shape, legarea se întâmplă să depindă de tipul obiectului. Acest concept este cunoscut sub numele de Dynamic Binding. Informația este furnizată la timpul de execuție, deci viteza de execuție este mai lentă comparativ cu legarea statică.

Care este asemănarea dintre legarea statică și legarea dinamică?

  • Ambele sunt legate de un polimorfism care permite unui obiect să se comporte în mai multe moduri.

Care este diferența dintre legarea statică și legarea dinamică?

Legarea statică vs. legarea dinamică

Obligația statică este tipul de legare care colectează toate informațiile necesare pentru a apela o funcție în timpul procesului de compilare. Legarea dinamică este tipul de legare care colectează toate informațiile necesare pentru a apela o funcție în timpul executării.
 Timp de legare
Obligația statică se produce la momentul compilării. Legarea dinamică apare la timpul de execuție.
Funcționalitate
Static Binding utilizează informații de tip pentru legare. Funcția Dynamic Binding utilizează obiecte pentru a rezolva legarea.
 Obiect real
Legarea statică nu utilizează un obiect real pentru legare. Legarea dinamică, folosiți obiectul real pentru legare.
Sinonime
Legarea statică este, de asemenea, cunoscută ca legarea timpurie. Legarea dinamică este cunoscută și ca legare târzie.
Execuţie
Viteza de execuție este rapidă în legarea statică. Viteza de execuție are o legare dinamică scăzută.
Exemplu
Legarea statică este utilizată în suprasolicitarea metodei. Funcția de legare dinamică este utilizată în suprascrierea metodei.

Rezumat - Static Legare vs. legare dinamică 

Există o legătură între o chemare a metodei și o definiție a metodei. Este cunoscut ca legare. Există două tipuri de legături numite legare statică și legare dinamică. Diferența dintre legarea statică și legarea dinamică este că, în legarea statică, legarea este rezolvată la momentul compilării, în timp ce legarea dinamică este rezolvată la momentul executării, ceea ce reprezintă timpul efectiv de execuție. Pe măsură ce informațiile necesare sunt furnizate înainte de timpul de execuție, legarea statică este rapidă în execuție în comparație cu legarea dinamică.

Descărcați PDF-ul legăturii statice vs. legarea dinamică

Puteți descărca versiunea PDF a acestui articol și îl puteți utiliza în scopuri offline conform notei de citare. Descărcați versiunea PDF aici: Diferența dintre legarea statică și legarea dinamică

Referinţă:

1.Java Interviu 04 - Legarea statică Vs Dynamic Binding, Mahika Tutorials, 27 Dec 2017. Disponibil aici