Diferență 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 î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 necesare sunt trimise prin apeluri de metodă cu parametri. Implementarea efectivă a metodei se află în definiția metodei. Există o legătură între apelul unei metode și definirea unei metode. Este cunoscut sub numele de legare. Există două tipuri de legături. Acestea sunt legarea statică și legare dinamică. Diferența cheie dintre legarea statică și legarea dinamică este că, în legarea statică, legarea este rezolvată în momentul compilării, în timp ce legarea dinamică este rezolvată în timpul executării, care este momentul real al execuției. Acest articol discută diferența dintre aceste două mecanisme de legare.
Ce este legarea statică?
Legarea este legătura dintre apelul unei metode și definițiile metodei.
Figura 01: Legarea statică și legarea dinamică
Consultați programul de mai jos scris în Java.
clasa publică A{
metoda public void1(){
System.out.println(„Metoda1”);
}
metoda public void2(){
System.out.println(„Metoda2”);
}
public static void main(String args){
A obj=nou A();
obj.method1();
obj.method2();
}
}
Conform programului de mai sus, este creat un obiect de tip A. Apoi metoda1 și metoda2 sunt apelate. Identificarea metodei care ar trebui să apeleze la execuție este cunoscută sub denumirea de legare. Declarația obj.method1() va apela method1() și obj.method2() va apela method2(). Acest link este obligatoriu.
În legarea statică, legarea este rezolvată în timpul compilării de către compilator. Este, de asemenea, cunoscut ca legarea timpurie. Legarea are loc înainte ca un program să ruleze efectiv. Legarea statică are loc în supraîncărcarea metodei. Consultați programul de mai jos scris în Java.
calcul public nul{
public void sum(int x, int y){
System.out.println(„Suma este „, x+y);
}
sumă public nulă (x dublu, y dublu){
System.out.println(„Suma este „, x+y);
}
public static void main(String args){
Calcul calcul=calcul nou();
cal.sum(2, 3);
cal.sum(5,1, 6,4);
}
}
Conform programului de mai sus, la trecerea celor două numere întregi se va invoca 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 rulare, astfel încât crește eficiența programului și viteza de execuție.
Ce este legarea dinamică?
În Dynamic Binding, compilatorul nu rezolvă legarea în timpul compilării. Legarea are loc în timpul rulării. Este, de asemenea, cunoscut sub numele de legare tardivă. Legarea dinamică are loc în anularea metodei. Consultați programul scris în Java.
clasa publică Shape(){
extragere public nulă(){
System.out.println(„Desenați forma”);
}
}
clasa publică Circle() extinde Forma{
extragere public nulă(){
System.out.println(„Desenați cerc”);
}
}
clasa publică Triunghi() extinde Forma{
extragere public nulă(){
System.out.println(„Desenați triunghi”);
}
}
test de clasă publică{
public static void main(Șir argumente){
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(). Clasa Cerc și clasa Triunghi extind clasa Shape. Class Circle și clasa Triangle pot moșteni atributele și metodele clasei Shape. Prin urmare, clasa Shape este super-clasa sau clasa părinte. Cercul clasei și Triunghiul clasei sunt subclase sau clase derivate. Aceste clase au și metoda draw() cu propriile lor implementări. Prin urmare, metoda draw() din super-clasa este suprascrisă.
În metoda principală, sunt invocate diferite obiecte. Există o variabilă de referință de tip Shape, care este s. Apoi, s invocă metoda conform clasei specifice. În momentul compilării, compilatorul va trimite doar metoda de extragere a super-claselor. Când începe execuția efectivă, va duce la executarea diferitelor metode de desen. În primul rând, s va indica obiectul de tip Shape. Prin urmare, va invoca metoda draw în clasa Shape. Apoi s-ul va indica obiectul de tip Circle și va invoca metoda draw a clasei Circle. În cele din urmă, s se va referi la obiectul de tip Triunghi și va invoca metoda draw î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 execuției, astfel încât viteza de execuție este mai lentă în comparație cu legarea statică.
Care este asemănarea dintre legarea statică și legarea dinamică?
Ambele acestea 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ă |
|
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. |
Ora de legare | |
Legarea statică are loc în timpul compilării. | 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 legătura. |
Obiect real | |
Legarea statică nu folosește un obiect real pentru legare. | Legare dinamică, utilizați obiectul real pentru legare. |
Sinonime | |
Legarea statică este cunoscută și sub numele de legarea timpurie. | Legarea dinamică este cunoscută și sub denumirea de legare tardivă. |
Execuție | |
Viteza de execuție este rapidă în legarea statică. | Viteza de execuție este scăzută în legarea dinamică. |
Exemplu | |
Legarea statică este utilizată în supraîncărcarea metodei. | Legarea dinamică este utilizată în anularea metodei. |
Rezumat – Legarea statică vs. Legarea dinamică
Există o legătură între apelul unei metode și definirea unei metode. Este cunoscut sub numele de 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ă în momentul compilării, în timp ce legarea dinamică este rezolvată în timpul executării, care este momentul real al execuției. Deoarece informațiile necesare sunt furnizate înainte de timpul de execuție, legarea statică se execută rapid în comparație cu legarea dinamică.
Descărcați PDF-ul pentru legarea statică vs. legarea dinamică
Puteți descărca versiunea PDF a acestui articol și să o utilizați în scopuri offline, conform nota de citare. Vă rugăm să descărcați versiunea PDF aici: Diferența dintre legarea statică și legarea dinamică