Diferența cheie - legarea statică vs legarea dinamică
Limbajele de programare precum Java și C # acceptă programarea orientată pe obiecte (OOP). Permite construirea de software folosind obiecte. Există multe obiecte într-un sistem software sau 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 necesare sunt trimise prin apeluri de metodă cu parametri. Implementarea efectivă a metodei este în definiția metodei. Există o legătură între apelul metodei și definirea metodei. Este cunoscut sub numele de obligatoriu. Există două tipuri de legături. Sunt legare statică și legare dinamică. Diferența cheie între legarea statică și legarea dinamică este că, în legarea statică, legarea se rezolvă la momentul compilării, în timp ce legarea dinamică se rezolvă la momentul rulării,care este timpul efectiv de execuție. Acest articol discută diferența dintre aceste două mecanisme de legare.
CUPRINS
1. Prezentare generală și diferența cheie
2. Ce este legarea statică
3. Ce este legarea dinamică
4. Asemănări între legarea statică și legarea dinamică
5. Comparație side by side - Legarea statică vs legarea dinamică în formă tabelară
6. Rezumat
Ce este legarea statică?
Legarea este legătura dintre apelul 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 („Metoda1”);
}
public void method2 () {
System.out.println („Metoda2”);
}
public static void main (String args) {
A obj = new A ();
obj.method1 ();
obj.method2 ();
}
}
Conform programului de mai sus, se creează un obiect de tip A. Apoi metoda1 și metoda2 sunt numite. Identificarea metodei care trebuie solicitată pentru execuție se numește obligatoriu. Declarația obj.method1 () va apela la metoda1 () și obj.method2 () va apela la metoda2 (). Acest link este obligatoriu.
În legarea statică, legarea este rezolvată la compilare de către compilator. Este, de asemenea, cunoscut sub numele de legare timpurie. Legarea se întâmplă înainte ca un program să ruleze efectiv. Legarea statică are loc la supraîncărcarea metodei. Consultați programul de mai jos scris în Java.
public void Calcul {
sumă nulă publică (int x, int y) {
System.out.println („Suma este“, x + y);
}
sumă publică nulă (dublu x, dublu y) {
System.out.println („Suma este“, x + y);
}
public static void main (String args) {
Calcul cal = calcul nou ();
sumă cal. (2,3);
cal.sum (5.1, 6.4);
}
}
Conform programului de mai sus, la trecerea celor două numere întregi, va fi invocată metoda cu două numere întregi. La trecerea a două valori duble, va fi invocată 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), va apela metoda sumă cu două valori duble. Toate informațiile necesare sunt cunoscute înainte de runtime, deci crește eficiența programului și viteza de execuție.
Ce este legarea dinamică?
În legarea dinamică, compilatorul nu rezolvă legarea la momentul compilării. Legarea are loc în timpul rulării. Este, de asemenea, cunoscut sub numele de legare tardivă. Legarea dinamică are loc la suprascrierea metodei. Consultați programul scris în Java.
public class Shape () {
public nul tragere () {
System.out.println („Desenați forma”);
}
}
public class Circle () extinde Forma {
public nul tragere () {
System.out.println („Desenează cercul”);
}
}
public class Triangle () extinde Forma {
public nul tragere () {
System.out.println („Desenați triunghiul”);
}
}
public class Test {
public static void main (String args) {
Forma s;
s = Formă nouă ();
s.draw ();
s = cerc nou ();
s.draw ();
s = triunghi nou ();
s.draw ();
}
}
Conform programului de mai sus, clasa Shape are o metodă draw (). Cercul clasei și clasa Triunghi extinde clasa Formă. Cercul clasei și Triunghiul clasei pot moșteni atributele și metodele clasei Formă. Prin urmare, clasa Formă este superclasa sau clasa părinte. Cercul de clase și Triunghiul de clase sunt subclase sau clase derivate. Aceste clase au, de asemenea, metoda draw () cu propriile implementări. Prin urmare, metoda draw () din clasa super este anulată.
Î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ă. În momentul compilării, compilatorul va face referire doar la metoda de extragere a clasei superioare. Când începe execuția efectivă, aceasta va duce la executarea diferitelor metode de extragere. În primul rând, s va indica obiectul de tip Shape. Prin urmare, va invoca metoda draw în clasa Shape. Apoi, s va indica obiectul de tip Cerc și va invoca metoda de extragere a clasei Cerc. În cele din urmă, s se va referi la obiectul de tip Triunghi și va invoca metoda de extragere în clasa 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țiile sunt furnizate în timpul rulării,deci viteza de execuție este mai mică în comparație 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ă?
Difuzarea articolului din mijloc înainte de tabel
Legarea statică vs legarea dinamică |
|
Legarea statică este tipul de legare care colectează toate informațiile necesare pentru a apela o funcție în timpul compilării. | Legarea dinamică este tipul de legare care colectează toate informațiile necesare pentru a apela o funcție în timpul rulării. |
Timpul de legare | |
Legarea statică are loc la compilare. | Legarea dinamică are loc în timpul rulării. |
Funcționalitate | |
Legarea statică folosește informații de tip pentru legare. | Legarea dinamică folosește obiecte pentru a rezolva legarea. |
Obiect real | |
Legarea statică nu folosește un obiect propriu-zis pentru legare. | Legare dinamică, utilizați obiectul real pentru legare. |
Sinonime | |
Legarea statică este, de asemenea, cunoscută sub numele de legare timpurie. | Legarea dinamică este, de asemenea, cunoscută sub numele de legare tardivă. |
Execuţie | |
Viteza de execuție este rapidă în legarea statică. | Viteza de execuție este redusă la legarea dinamică. |
Exemplu | |
Legarea statică este utilizată în supraîncărcarea metodei. | Legarea dinamică este utilizată în suprascrierea metodei. |
Rezumat - Legare statică vs legare dinamică
Există o legătură între apelul metodei și definirea metodei. Este cunoscut sub numele de obligatoriu. 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 se rezolvă la momentul compilării, în timp ce legarea dinamică se rezolvă la timpul de execuție, care este momentul efectiv de execuție. Deoarece informațiile necesare sunt furnizate înainte de timpul de execuție, legarea statică este rapidă în executare în comparație cu legarea dinamică.
Descărcați PDF-ul de legare statică vs legare dinamică
Puteți descărca versiunea PDF a acestui articol și o puteți folosi în scopuri offline conform notei de citare. Vă rugăm să descărcați versiunea PDF aici: Diferența dintre legarea statică și legarea dinamică