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

Съдържание:

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

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

Видео: Разлика между статично и динамично обвързване
Видео: Статичные и динамичные глаголы в английском - секрет времён CONTINUOUS! 2024, Ноември
Anonim

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

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

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

Обвързването е връзката между извикване на метод и дефиниции на метод.

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

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

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

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

public void method1(){

System.out.println(“Метод1”);

}

public void method2(){

System.out.println(“Метод2”);

}

public static void main(String args){

A obj=нов A();

obj.method1();

obj.method2();

}

}

Съгласно горната програма се създава обект от тип А. След това се извикват метод1 и метод2. Идентифицирането кой метод трябва да извика изпълнение е известно като обвързване. Изявлението obj.method1() ще извика method1() и obj.method2() ще извика method2(). Тази връзка е обвързваща.

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

публично изчисление на невалидни{

public void sum(int x, int y){

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

}

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

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

}

public static void main(String args){

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

cal.sum(2, 3);

cal.sum(5.1, 6.4);

}

}

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

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

При динамичното обвързване компилаторът не разрешава обвързването по време на компилиране. Свързването се извършва по време на изпълнение. Известно е още като късно свързване. Динамичното обвързване възниква при отмяна на метод. Вижте програма, написана на Java.

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

public void draw(){

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

}

}

публичният клас Circle() разширява Shape{

public void draw(){

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

}

}

публичният клас Triangle() разширява Shape{

public void draw(){

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

}

}

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

public static void main(String args){

Форма s;

s=нова фигура();

s.draw();

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

s.draw();

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

s.draw();

}

}

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

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

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

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

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

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

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

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

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

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

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

Препоръчано: