Wprowadzenie do wiązania statycznego i dynamicznego

Są to dwa rodzaje wiązania. Powiązanie odnosi się do powiązania wywołania metody z treścią metody. W przypadku wiązania statycznego wszystkie zadania i deklaracje mają miejsce w momencie kompilacji. Mają wiele zalet i wad w stosunku do siebie. Pod względem wydajności wiązanie statyczne jest lepsze niż dynamiczne wiązanie metod i zmiennych. Wiązanie statyczne jest również znane jako Wczesne wiązanie. Jak wiemy, metody Wiązania takie jak statyczny, prywatny i końcowy zdarzają się w czasie kompilacji, podczas gdy w kompilatorze dynamicznego wiązania nie decyduje, która metoda zostanie wywołana.
Poniżej podany przykład jest lepszym przykładem do zrozumienia

Przykład 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..");
)
)

W podanym powyżej przykładzie możemy zobaczyć, w jaki sposób statyczne wiązanie ma zapobiegać przeciążeniu klasy.

Poniższy przykład pokaże, jak działa Dynamiczne wiązanie, tutaj metoda klasy podrzędnej zastępuje klasę nadrzędną

Przykład nr 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..");
)
)

W tym przykładzie statyczny nie występuje w metodzie początkowej w metodzie klasy nadrzędnej i podrzędnej, dlatego metoda o tej samej nazwie zastąpi metodę klasy nadrzędnej. Zdarza się z tego powodu.

Na powyższym zrzucie ekranu przedstawiono wynik działania programu.

Dlaczego wiązanie statyczne i dynamiczne?

  1. Programowanie musi obsługiwać różne sytuacje za pomocą wiązania statycznego i dynamicznego.
  2. Powiązanie w czasie kompilacji jest znane jako Wczesne wiązanie, tzn. Oznacza to, kiedy trzeba zadeklarować rzeczy podczas kompilacji (na samym początku) wykonywania programu. W dynamicznym wiązaniu wiązanie odbywa się w czasie wykonywania znanym również jako późne wiązanie.
  3. Metoda i zmienne, zdefiniowane jako statyczne, końcowe i prywatne, odnoszą się do wiązania statycznego, natomiast metody wirtualne, które są wykonywane w czasie wykonywania, nazywane są wiązaniem dynamicznym.
  4. Metoda Overloading / Operator Overloading używa Static Binding, więc jest to jeden z najlepszych przykładów, podczas gdy Overriding używa Dynamic, więc jest znany jako najlepszy przykład Dynamic Binding.
  5. W tym przypadku obiekt rzeczywisty nigdy nie jest używany, podczas gdy obiekt rzeczywisty jest używany w powiązaniu dynamicznym.

Przykłady

W podanym poniżej przykładzie możemy zobaczyć, jak dzieje się wiązanie statyczne

Przykład 1

// Implementacja klasy nadrzędnej

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();
)
)

W podanym wyżej programie col jest zmienną referencyjną typu Class Colony wskazującą na obiekt klasy Colony. col2 jest także zmienną referencyjną typu Class Colony, ale wskazuje na obiekt klasy Building. Kiedy kompilacja ma miejsce, podczas gdy kompilator wiązania nigdy nie sprawdza typu obiektu, po prostu sprawdza typ zmiennej referencyjnej.

W powyższym programie, takim jak col .startElectricity (), kompilator sprawdza, czy definicja metody start elektrycznej () istnieje w klasie Colony, czy nie, ponieważ col jest typu Colony. Podobnie w przypadku wywołania metody col2.startElectricity () Sprawdza, czy metoda start electric () jest obecna w klasie Colony, czy nie, ponieważ col2 jest również typem klasy Colony. Nie sprawdza, do którego obiektu wskazuje col, col2. ten rodzaj wiązania jest znany jako wiązanie statyczne.

Wynik:

Powyższe dane wyjściowe programu pokazują, w jaki sposób są używane elementy statyczne, aby zapobiec zastąpieniu.

Przykład nr 2

W podanym poniżej przykładzie możemy zobaczyć, jak dynamiczne wiązanie zachodzi w czasie wykonywania

// Implementacja klasy nadrzędnej

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();
)
)

W podanym wyżej programie wszystko jest takie samo, jak w statycznym programie przykładowym, ale w tym przykładzie element metody „statyczny” został usunięty. Podczas tego procesu zostanie wywołana metoda głównego obiektu, na który wskazuje col.startElectricity (). Podczas wywołania col2.startElectricity () zostanie wywołana metoda głównego obiektu, na który wskazuje col2. Ten rodzaj wiązania jest znany jako Dynamiczne wiązanie.

Wynik:

Korzyść

  1. Wykonywanie wiązania statycznego jest bardziej wydajne i szybsze niż dynamiczne. Ten kompilator Binding wie, że tego rodzaju metod nie można zastąpić.
  2. W wiązaniu statycznym typ jest używany, podczas gdy dynamiczne wiązanie używa obiektów do wiązania.
  3. Jedną z głównych zalet dynamicznego wiązania jest elastyczność, ponieważ ze względu na elastyczność pojedyncza funkcja może obsługiwać różne typy obiektów w czasie wykonywania.
  4. W wiązaniu statycznym wszystkie informacje potrzebne przed czasem kompilacji, natomiast w wiązaniu dynamicznym żadne informacje nie są dostępne przed czasem wykonywania.
  5. Wiązanie statyczne może odbywać się przy użyciu normalnych funkcji, natomiast wiązanie dynamiczne można uzyskać za pomocą funkcji wirtualnych.

Wniosek

Oto niektóre z ważnych pojęć programowania obiektowego. Powiązanie odnosi się do wykonania kodu. Zdarza się to w czasie kompilacji, podczas gdy dynamiczne wiązanie odbywa się w czasie wykonywania. Definicja, deklaracja i zakres deklaracji, są to trzy ważne filary wiązania statycznego, podczas gdy w wiązaniu dynamicznym, nazwa wiązania i czas życia spraw wiążących.

Polecane artykuły

Jest to przewodnik po wiązaniu statycznym i dynamicznym. Tutaj omawiamy wprowadzenie, zastosowania i zalety. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Rodzaje hostingu
  2. Przeciążanie i zastępowanie w Javie
  3. Dyrektywy AngularJS
  4. Polimorfizm w Javie
  5. Metoda statyczna JavaScript | Praca | Przykłady