Introducere în legarea statică și legarea dinamică

Acestea sunt două tipuri de legare. Legarea se referă la asocierea apelului metodei la corpul metodei. În legarea statică, toată alocarea și declarația se întâmplă în momentul compilării. Au mai multe argumente pro și contra unul față de celălalt. În performanță, legarea statică este mai bună decât legarea dinamică a metodelor și variabilelor. Legarea statică este cunoscută și sub denumirea de Early Binding. După cum știm, metodele Legarea ca static, privat și final se întâmplă în timp de compilare, în timp ce în compilatorul de legare dinamică nu se decide ce metodă va fi apelată.
Mai jos este dat un exemplu mai bun de înțeles

Exemplul # 1

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
static void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
static void start() (
System.out.println("Bike will start now..");
)
)

În exemplul menționat mai sus, putem vedea cum legarea statică este destinată să prevină supraîncărcarea clasei.

Mai jos, exemplul dat va afișa modul în care funcționează legarea dinamică, aici metoda clasei copil este peste clasa părinte

Exemplul # 2

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
void start() (
System.out.println("Bike will start now..");
)
)

În acest exemplu, static nu este prezent în metoda de pornire sub metoda clasei părinte și copil, astfel metoda cu același nume va înlocui metoda clasei părinte. Se întâmplă datorită acestui lucru.

În ecranul de mai sus, este afișată ieșirea programului.

De ce legarea statică și legarea dinamică?

  1. Este necesar ca programarea să gestioneze diferite situații prin utilizarea legării statice și dinamice.
  2. Legarea în timp de compilare este cunoscută sub numele de Early Binding, adică atunci când este nevoie să declare lucrurile la momentul compilării (chiar la început) a execuției programului. În legarea dinamică, legarea are loc la timpul de rulare, care este, de asemenea, cunoscut sub numele de Late Binding.
  3. Metoda și variabilele, definite ca statice, finale și private se referă la legarea statică, în timp ce metodele virtuale pe care legarea are loc în timpul rulării sunt cunoscute sub numele de Legare dinamică.
  4. Metoda Supraîncărcare / Operator Supraîncărcarea folosește legarea statică, astfel încât este unul dintre cele mai bune exemple în timp ce Overriding folosește Dynamic, astfel încât este cunoscut ca cel mai bun exemplu de legare dinamică.
  5. În acest caz, un obiect real nu este niciodată utilizat în timp ce un obiect real este utilizat în legarea dinamică.

Exemple

În exemplul de mai jos, putem vedea cum se întâmplă legarea statică

Exemplul # 1

// Implementarea clasei de părinți

class Colony(
//Static method to start the electricity of the Colony
public static void start electricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//Static method to start the electricity of Building
public static void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

În programul menționat mai sus, col este variabila de referință a clasei de tip Colony care indică obiectul clasei Colony. col2 este, de asemenea, variabila de referință a clasei de tip Colony, dar care indică obiectul clasei Building. Când are loc compilarea, în timp ce compilatorul obligatoriu nu verifică niciodată tipul de obiect, verifică doar tipul de variabilă de referință.

În programul de mai sus, cum ar fi col. StartElectricity (), compilatorul verifică dacă definiția de pornire electricitate () există în clasa Colony sau nu, deoarece col este de tip Colony class. În mod similar pentru apelul metodei col2.startElectricity (), verifică dacă metoda start electric () este prezentă în clasa Colony sau nu, deoarece col2 este de asemenea clasa de tip Colony. Nu verifică spre ce obiect col, col2 indică. acest tip de legătură este cunoscut sub numele de legarea statică.

ieşire:

Ieșirea de mai sus a programului arată modul în care membrii statici sunt folosiți pentru a preveni suprasolicitarea.

Exemplul # 2

În exemplul de mai jos, putem vedea cum se produce legarea dinamică în timpul rulării

// Implementarea clasei de părinți

class Colony(
//method to start the electricity of the Colony
void startElectricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//method to start the electricity of Building
void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

În programul menționat mai sus, totul este la fel ca într-un program de exemplu static, dar în acest exemplu membru al metodei „static” este eliminat. În acest timp, va fi apelată metoda obiectului principal către care este indicat col.startElectricity (). În timp ce pentru apelul col2.startElectricity (), metoda obiectului principal către care se îndreaptă col2 va fi apelată. Acest tip de legare este cunoscut sub numele de Legătură dinamică.

ieşire:

Avantaj

  1. Executarea legării statice este mai eficientă și mai rapidă decât dinamică. Acest compilator de legare știe că aceste tipuri de metode nu pot fi ignorate.
  2. În legarea statică, tipul este utilizat în timp ce legarea dinamică folosește obiecte pentru legături.
  3. Unul dintre avantajele majore ale legării dinamice este flexibilitatea, datorită flexibilității unei singure funcții care poate gestiona diferite tipuri de obiect în timpul rulării.
  4. În legarea statică, toate informațiile necesare înainte de timpul de compilare, în timp ce în legarea dinamică, nu există informații disponibile înainte de timpul de rulare.
  5. Legarea statică poate avea loc folosind funcții normale, în timp ce legarea dinamică se poate realiza folosind funcțiile virtuale.

Concluzie

Acestea sunt câteva dintre conceptele importante ale programării orientate pe obiecte. Legarea se referă la executarea codului. Se întâmplă la momentul compilării în timp ce legarea dinamică se întâmplă la timpul de rulare. Definiție, declarație și domeniul de aplicare al declarației, aceștia sunt trei piloni importanți ai legării statice, în timp ce în legarea dinamică, numele legării și durata de viață a problemelor obligatorii.

Articole recomandate

Acesta este un ghid pentru legarea statică și legarea dinamică. Aici discutăm despre introducere, utilizări și avantaje. Puteți parcurge și alte articole sugerate pentru a afla mai multe -

  1. Tipuri de gazduire web
  2. Supraîncărcare și suprasolicitare în Java
  3. Directivele AngularJS
  4. Polimorfism în Java
  5. JavaScript Metoda statică | De lucru | Exemple