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

Съдържание:

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

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

Видео: Разлика между статично и динамично свързване
Видео: Ошибки в сантехнике. Вводной узел в квартиру. 2024, Може
Anonim

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

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

СЪДЪРЖАНИЕ

1. Общ преглед и ключова разлика

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

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

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

5. Равно до сравнение - статично обвързване срещу динамично обвързване в таблична форма

6. Резюме

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

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

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

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

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

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

public void method1 () {

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

}

public void method2 () {

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

}

публична статична void main (String args) {

A obj = нов A ();

obj.method1 ();

obj.method2 ();

}

}

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

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

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

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

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

}

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

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

}

публична статична void main (String args) {

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

изчислена сума (2,3);

изчислена сума (5.1, 6.4);

}

}

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

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

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

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

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

System.out.println („Начертаване на фигура“);

}

}

public class Circle () разширява Shape {

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

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

}

}

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

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

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

}

}

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

публична статична void main (String args) {

Форма s;

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

s.draw ();

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

s.draw ();

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

s.draw ();

}

}

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

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

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

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

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

Различна статия Средна преди таблица

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

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

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

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

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

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

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