Разлика между статично и динамично свързване

Ключова разлика - статична Подвързване срещу динамично подвързване
 

Езици за програмиране като Java и C # поддръжка обектно-ориентирано програмиране (OOP). Тя позволява изграждането на софтуер, като се използват обекти. В софтуерната система или програма има много обекти. Тези обекти имат атрибути и методи. Атрибутите описват характеристиките. Методите описват действията, които могат да бъдат извършени от обекта. Данните се предават през обекти с помощта на методи. Необходимите стойности се изпращат чрез обаждания на методи с параметри. Реалното изпълнение на метода е в дефиницията на метода. Има връзка между извикване на метод и дефиниция на метод. Известно е като свързване. Има два вида връзки. Те са статично свързване и динамично свързване. Най- ключова разлика между статичното свързване и динамичното свързване е това, при статично свързване, обвързването се разрешава по време на компилиране, докато динамичното свързване е разрешено по време на изпълнение, което е действителното време на изпълнение. Тази статия обсъжда разликата между тези два механизма на свързване.

СЪДЪРЖАНИЕ

1. Преглед и ключова разлика
2. Какво е статично свързване
3. Какво е динамично свързване
4. Прилики между статичното свързване и динамичното свързване
5. Паралелно сравнение - статично подвързване срещу динамично свързване в таблична форма
6. Резюме

Какво е статично свързване?

Свързването е връзката между метода и определенията на метода.

Фигура 01: Статично свързване и динамично свързване

Вижте по-долу програмата, написана на Java.

публична класа A

public void method1 ()

System.out.println ( "Method1");

public void method2 ()

System.out.println ( "Method2");

public static void main (String [] args)

A obj = нов A ();

obj.method1 ();

obj.method2 ();

Според горната програма се създава обект от тип А. Тогава се извикват method1 и method2. Определянето на кой метод трябва да изисква изпълнение, е известно като задължително. Оператор obj.method1 () ще извика method1 (), а obj.method2 () ще извика method2 (). Тази връзка е обвързваща.

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

публична невалидна калкулация

публична невалидна сума (int x, int y)

System.out.println („Сумата е“, x + y);

публична невалидна сума (двойна x, двойна y)

System.out.println („Сумата е“, x + y);

public static void main (String [] args)

Изчисляване cal = ново изчисление ();

cal.sum (2,3);

cal.sum (5.1, 6.4);

Според горната програма при преминаване на двете цели числа ще бъде извикан методът с две цели числа. При предаване на две двойни стойности ще бъде извикан методът, съответстващ на две двойни стойности. Този процес на свързване се случва в момента на съставяне. Компилаторът знае, че трябва да извика метода с две цели числа за cal.sum (2,3). За cal (5.1,6.4) той ще извика метода на сумата с две двойни стойности. Цялата необходима информация е известна преди изпълнение, така че увеличава ефективността на програмата и скоростта на изпълнение.

Какво е динамично обвързване?

В Dynamic Binding компилаторът не разрешава свързването по време на компилиране. Свързването става по време на изпълнение. Той също е известен като късно свързване. Динамичното свързване се случва при преодоляване на метода. Вижте програмата, написана на Java.

публична класа Shape ()

публично невалидно теглене ()

System.out.println („Начертайте форма“);

обществен клас Circle () разширява Shape

публично невалидно теглене ()

System.out.println („Начертайте кръг“);

Триъгълник в обществена класа () разширява форма

публично невалидно теглене ()

System.out.println („Начертайте триъгълник“);

Тест за публична класа

public static void main (String [] args)

Форма s;

s = нова форма ();

s.draw ();

s = нов кръг ();

s.draw ();

s = нов триъгълник ();

s.draw ();

Според горната програма, клас Shape има метод draw (). Клас кръг и клас Триъгълник разширява клас Форма. Клас кръг и клас Триъгълник могат да наследят атрибутите и методите на клас Shape. Следователно клас Shape е класът супер клас или родител. Клас кръг и клас Триъгълник са подкласове или производни класове. Тези класове имат метод на draw () със собствени реализации. Следователно методът draw () в суперкласа е отменен.

В основния метод се извикват различни обекти. Има референтна променлива от тип Shape, която е s. След това s извиква метода според конкретния клас. По време на компилация компилаторът ще се отнася само за метода на рисуване на суперклас. Когато започне действителното изпълнение, това ще доведе до изпълнението на различни методи за изтегляне. Първо, s ще сочи към обекта от тип Shape. Следователно, той ще се позове на метода на изтегляне в клас Shape. Тогава s ще посочи обекта от тип Circle и ще се позове на метода за изтегляне на клас Circle. И накрая, s ще се позовава на обекта от тип Триъгълник и ще извика метода на рисуване в клас Триъгълник. Въпреки че референтната променлива е от тип Shape, обвързването се случва да зависи от типа на обекта. Тази концепция е известна като Динамично свързване. Информацията се предоставя по време на изпълнение, така че скоростта на изпълнение е по-бавна в сравнение със статичното свързване.

Какво е сходството между статичното свързване и динамичното свързване?

  • И двете са свързани с полиморфизъм, който позволява на един обект да се държи по много начини.

Каква е разликата между статичното свързване и динамичното свързване?

Статично обвързване срещу динамично свързване

Статично свързване е видът на свързването, който събира цялата необходима информация за извикване на функция по време на компилиране. Динамичното свързване е типът свързване, който събира цялата необходима информация за извикване на функция по време на изпълнение.
 Време на обвързване
Статичното свързване става по време на компилиране. Динамичното свързване се случва по време на изпълнение.
Функционалност
Статичното свързване използва информация за типа за свързване. Dynamic Binding използва обекти, за да разреши да се свърже.
 Действителен обект
Статичното свързване не използва действителен обект за свързване. Динамично свързване, използвайте действителния обект за свързване.
Синоними
Статичното свързване е известно още като ранно свързване. Динамичното свързване е известно също като късно свързване.
Екзекуция
Скоростта на изпълнение е бърза в статично свързване. Скоростта на изпълнение е ниска при динамично свързване.
пример
При претоварване на метода се използва статично свързване. Динамичното свързване се използва при преодоляване на метода.

Обобщение - Статично Подвързване срещу динамично подвързване 

Има връзка между извикване на метод и дефиниция на метод. Известно е като свързване. Има два типа връзки, наречени статично свързване и динамично свързване. Разликата между статичното свързване и динамичното свързване е, че при статично свързване свързването се разрешава по време на компилиране, докато динамичното свързване е разрешено по време на изпълнение, което е действителното време на изпълнение. Тъй като необходимата информация е предоставена преди времето на изпълнение, статичното свързване е бързо в изпълнение, сравнено с динамичното свързване.

Изтеглете PDF на статичното свързване срещу динамичното свързване

Можете да изтеглите PDF версията на тази статия и да я използвате за офлайн цели, съгласно цитираната бележка. Моля, изтеглете PDF версията тук: Разлика между статично и динамично подвързване

справка:

1.Java Interview 04 - Статично подвързване Vs Dynamic Binding, Mahika Tutorials, 27 Декември 2017. Достъпно тук