Въведение в статичното свързване и динамичното свързване

Това са два вида свързване. Свързването се отнася до свързването на извикване на метод с тялото на метода. При статично обвързване, всички задания и декларации се случват в момента на компилиране. Те имат множество плюсове и минуси един срещу друг. В изпълнение, статичното свързване е по-добро от динамичното свързване на методите и променливите. Статичното свързване е известно още като ранно свързване. Както всичко, което знаем, обвързването като статично, частно и окончателно се случва през времето на компилиране, докато в компилатора на динамично свързване не решава кой метод ще бъде извикан.
По-долу е даден по-добър пример за разбиране

Пример №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..");
)
)

В горния пример можем да видим как е предназначено статичното свързване, за да се предотврати претоварването на класа.

По-долу в дадения пример ще се покаже как работи динамичното свързване, тук методът на детския клас надделява над родителския клас

Пример №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..");
)
)

В този пример статиката не присъства в метода на стартиране по метода на клас родител и дете, като по този начин методът със същото име ще отмени метода на родителския клас. Това се случва поради това.

В горната снимка на екрана е даден изходът на програмата.

Защо статично свързване и динамично свързване?

  1. Необходимо е програмирането да се справя с различни ситуации чрез използването на статично и динамично свързване.
  2. Времето за компилиране на времето е известно като Early Binding, т.е. Това означава, когато трябва да декларирате нещата по време на компилирането (в самото начало) на изпълнението на програмата. При динамично свързване свързването се извършва по време на изпълнение, което е известно още като късно свързване.
  3. Метод и променливи, дефинирани като статични, крайни и частни, се отнасят до статичното свързване, докато виртуалните методи, които свързването се извършва по време на изпълнение, са известни като динамично свързване.
  4. Метод Overloading / Operator Overloading използва статично свързване, така че е един от най-добрите примери за него, докато Overriding използва Dynamic, така че е известен като най-добрият пример за динамично свързване.
  5. При това истински обект никога не се използва, докато реален обект, използван в динамичното свързване.

Примери

В дадения по-долу пример можем да видим как се случва статичното свързване

Пример №1

// Въвеждане на родителски клас

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

В горната програма, col е референтната променлива от тип клас Colony, насочена към обекта от клас Colony. col2 е също референтната променлива от тип клас Colony, но насочваща към обекта на клас Building. Когато компилацията се извършва, докато обвързващият компилатор никога не проверява типа на обекта, той просто проверява типа на референтната променлива.

В горната програма, като например col .startElectricity (), компилаторът проверява дали определението на метода за стартиране на електричество () съществува в клас Colony или не, защото col е тип клас Colony. Подобно на метода col2.startElectricity (), той проверява дали методът за стартиране на електричество () присъства в клас Colony или не, защото col2 също е клас клас Colony. Той не проверява към кой обект col, col2 е насочен. този вид свързване е известен като статично свързване.

изход:

Горепосоченият изход на програмата показва как се използват статични членове, за да се предотврати отмяната.

Пример №2

В дадения по-долу пример можем да видим как възниква динамичното свързване по време на изпълнение

// Въвеждане на родителски клас

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

В горепосочената програма всичко е същото като в статична примерна програма, но в този пример членът на метода „статично“ се премахва. По време на това ще бъде извикан методът на основния обект, към който се сочи col.startElectricity (). Докато за кол2.startElectricity () ще бъде извикан методът на основния обект, към който се сочи col2. Този тип свързване е известен като Динамично свързване.

изход:

предимство

  1. Изпълнението на статичното свързване е по-ефективно и по-бързо от динамичното. Този компилатор на свързване знае, че тези видове методи не могат да бъдат отменени.
  2. В статичното свързване типът се използва, докато динамичното свързване използва обекти за връзки.
  3. Едно от основните предимства на динамичното свързване е гъвкавостта, поради гъвкавостта една единствена функция може да обработва различни видове обект по време на изпълнение.
  4. В статичното подвързване, цялата информация, необходима преди времето за компилиране, докато в динамичното свързване, не остава налична информация преди времето за изпълнение.
  5. Статичното свързване може да се осъществи с помощта на нормални функции, докато динамичното свързване може да се постигне с помощта на виртуалните функции.

заключение

Това са някои от важните концепции на обектно-ориентираното програмиране. Обвързването се отнася до изпълнението на кода. Това се случва в момента на компилиране, докато Dynamic Binding се случва по време на изпълнение. Определение, декларация и обхват на деклариране, това са три важни стълба на статичното подвързване, докато в динамичното подвързване, име на подвързване и продължителност на живота на обвързващите въпроси.

Препоръчителни статии

Това е ръководство за статично свързване и динамично свързване. Тук обсъждаме въвеждането, употребите и предимствата. Можете също да прегледате и другите ни предложени статии, за да научите повече -

  1. Видове уеб хостинг
  2. Претоварване и отмяна в Java
  3. AngularJS директиви
  4. Полиморфизъм в Java
  5. Статичен метод на JavaScript | Работещи | Примери