Ключова разлика – Ранно срещу късно свързване
Ранно свързване и късно свързване са две концепции, свързани с полиморфизма. Ранното свързване се случва по време на компилиране, докато късното свързване се случва по време на изпълнение. Ключовата разлика между ранното и късното свързване е, че ранното свързване използва информацията за класа, за да разреши извикването на метод, докато късното свързване използва обекта, за да разреши извикването на метод.
Езиците за програмиране като Java поддържат обектно ориентирано програмиране (ООП). Това е парадигма, която позволява конструирането на програмата или софтуера с помощта на обекти. В софтуера има множество обекти. Тези обекти са свързани един с друг и предават съобщения с помощта на методи. Всеки обект има характеристики и поведение. Характеристиките се описват чрез свойствата или атрибутите. Поведенията са описани с помощта на методи. Обектът Ученик може да има характеристики като име, възраст и те са представени чрез свойства. Обектът Студент може да има поведение като учене и четене и те са представени чрез методи. Един основен стълб на ООП е полиморфизмът. Той позволява на даден обект да се държи по много начини. Ранното свързване и късното свързване са две концепции в полиморфизма. Методите за претоварване се свързват с помощта на ранно свързване. Заменените методи се свързват чрез късно свързване.
Какво е ранно обвързване?
В ранното обвързване информацията за класа се използва за разрешаване на извикване на метод. Ранното свързване се извършва по време на компилиране. Известно е още като статично свързване. В този процес обвързването се извършва преди програмата действително да се изпълни. Методите за претоварване се свързват с помощта на ранно свързване. Вижте програмата по-долу.
Фигура 01: Клас на изчисление
Фигура 02: Основна програма за ранно обвързване
Съгласно горната програма, класът Calculation съдържа метод за добавяне, който приема две цели числа и друг метод за добавяне, който приема две двойни стойности. В основната програма се създава обект от тип Calculation. При подаване на две цели числа към метода за добавяне, той ще извика метода за добавяне, който приема две цели числа. Когато подадете две двойни стойности към метода за добавяне, той ще извика метода, съответстващ на две двойни стойности. Този процес на свързване се случва по време на компилиране. Цялата необходима информация е известна преди изпълнението, така че увеличава ефективността на програмата и скоростта на изпълнение.
Какво е късно обвързване?
При късно свързване обектът се използва за разрешаване на извикване на метод. Късното свързване се случва по време на изпълнение. Известно е още като динамично обвързване. В този процес обвързването става при изпълнение на програмата. Заменените методи се свързват с помощта на късно свързване. Вижте програмата по-долу.
Фигура 03: Клас на формата
Фигура 04: Клас кръг
Фигура 05: Клас триъгълник
Фигура 06: Основна програма за късно свързване
Съгласно горната програма, класът Shape има метод за рисуване. Класът Circle и класът Triangle разширява класа Shape. Следователно тези два класа могат да наследят атрибутите и методите на класа Shape. Shape Class е основният клас. Класовете Circle и Triangle са производни класове. Класът Circle и класът Triangle също имат метода draw със свои собствени реализации. И така, методът за рисуване в класа Shape се отменя от методите за рисуване на производните класове.
В основната програма се създава референтна променлива s от тип Shape. По време на компилиране компилаторът ще препраща само метода за изтегляне на базовия клас. По време на изпълнение ще се изпълняват различни методи за рисуване. Първо, s ще сочи към обект от тип Shape. И така, методът за рисуване на класа Shape се извиква. Тогава s ще сочи към обект от тип Circle и ще извика метода за рисуване на класа Circle. Накрая s ще посочи обект от тип Triangle и ще извика метода draw в класа Triangle. Методите се извикват в зависимост от обектите. Следователно обектът се използва за разрешаване на извикване на метод при късно свързване. Информацията, необходима за обвързване, се предоставя по време на изпълнение, така че скоростта на изпълнение е по-бавна в сравнение с ранното обвързване.
Каква е приликата между ранното и късното свързване?
Както ранното свързване, така и късното свързване са свързани с полиморфизъм, който е стълб на ООП
Каква е разликата между ранното и късното свързване?
Ранно обвързване срещу късно обвързване |
|
Процесът на използване на информацията за класа за разрешаване на извикване на метод, което се случва по време на компилиране, се нарича ранно свързване. | Процесът на използване на обекта за разрешаване на извикване на метод, което се случва по време на изпълнение, се нарича късно свързване. |
Време на обвързване | |
Ранното свързване се случва по време на компилиране. | Късното свързване се случва по време на изпълнение. |
Функционалност | |
Ранното обвързване използва информацията за класа, за да разреши извикването на метод. | Късното свързване използва обекта за разрешаване на извикване на метод. |
Синоними | |
Ранното обвързване е известно още като статично обвързване.. | Късното обвързване е известно още като динамично обвързване. |
Случване | |
Методите за претоварване са свързани чрез ранно свързване. | Отменените методи се свързват чрез късно свързване. |
Скорост на изпълнение | |
Скоростта на изпълнение е по-висока при ранно обвързване. | Скоростта на изпълнение е по-ниска при късно свързване. |
Резюме – Ранно срещу късно обвързване
OOP се използва обикновено за разработка на софтуер. Един основен стълб на ООП е полиморфизмът. Ранното обвързване и късното обвързване са свързани с това. Ранното свързване се случва по време на компилиране, докато късното свързване се случва по време на изпълнение. При претоварване на метода свързването се случва с помощта на ранното свързване. При отмяната на метод свързването се случва с помощта на късното свързване. Разликата между ранното и късното свързване е, че ранното свързване използва информацията за класа, за да разреши извикването на метод, докато късното свързване използва обекта, за да разреши извикването на метод.