Ранното свързване и късното обвързване са две понятия, свързани с полиморфизма. Ранното свързване се извършва по време на компилиране, докато късното свързване се извършва по време на изпълнение. Най- ключова разлика между ранното и късното обвързване е това Ранното свързване използва информацията за класа за разрешаване на извикване на метод, докато Късното свързване използва обекта, за да разреши повикването на метод.
Езици за програмиране като Java поддържа обектно ориентирано програмиране (OOP). Това е парадигма, която позволява конструирането на програмата или софтуера с помощта на обекти. В софтуера има множество обекти. Тези обекти са свързани помежду си и предават съобщения чрез методи. Всеки обект има характеристики и поведение. Характеристиките са описани от свойствата или атрибутите. Поведенията са описани с помощта на методи. Обектът Студент може да има характеристики като име, възраст и те са представени от свойства. Обектът Студент може да има поведения като изучаване и четене и те са представени чрез методи. Един основен стълб на ООП е полиморфизмът. Тя позволява на един обект да се държи по много начини. Ранното свързване и късното обвързване са две понятия в полиморфизма. Методите за претоварване са свързани чрез използване на ранно свързване. Отменените методи са свързани чрез използване на късно свързване.
1. Преглед и ключова разлика
2. Какво е ранно обвързване
3. Какво е късно свързване
4. Прилики между ранното и късното обвързване
5. Паралелно сравнение - ранно срещу късно обвързване в таблична форма
6. Резюме
В ранното свързване информацията за класа се използва за разрешаване на извикване на метод. Ранното свързване се извършва по време на компилиране. Известно е още като статичното свързване. В този процес обвързването става преди програмата действително да се стартира. Методите за претоварване са свързани чрез използване на ранно свързване. Вижте по-долу програмата.
Фигура 01: Клас на изчисление
Фигура 02: Основна програма за ранно подвързване
Съгласно горната програма, класът за изчисляване съдържа метод на добавяне, който приема две цели числа и друг метод за добавяне, който приема две двойни стойности. В основната програма се създава обект от тип Calculation. Когато предава две цели числа към метода add, той ще извика метода add, който приема две цели числа. Когато предава две двойни стойности на метода на добавяне, той ще извика метода, съответстващ на две двойни стойности. Този процес на свързване се осъществява по време на компилиране. Цялата необходима информация е известна преди изпълнение, така че увеличава ефективността на програмата и скоростта на изпълнение.
В Късно свързване обектът се използва за разрешаване на извикване на метод. Късното свързване се извършва по време на изпълнение. Той също е известен като динамично свързване. В този процес обвързването става при изпълнение на програмата. Отменените методи са свързани чрез използване на късно свързване. Вижте по-долу програмата.
Фигура 03: Клас на формата
Фигура 04: Класов кръг
Фигура 05: Клас на триъгълник
Фигура 06: Основна програма за късно свързване
Според горната програма, клас Shape има метод на рисуване. Клас кръг и клас Триъгълник разширява класа Форма. Следователно тези два класа могат да наследят атрибутите и методите на класа Shape. Shape Class е базовият клас. Класовете кръг и триъгълник са производни класове. Класът Circle и клас Триъгълник също имат метод за изтегляне със собствени реализации. И така, методът на изтегляне в клас Shape се преодолява от методите на изтегляне на производни класове.
В основната програма се създава референтна променлива s тип Shape. По време на компилация компилаторът ще се отнася само за метода на изтегляне на базовия клас. По време на изпълнение ще се изпълняват различни методи за изтегляне. Първо, s ще посочи обекта от тип Shape. И така, методът на рисуване на клас Shape се извиква. Тогава s ще посочи обекта от тип Circle и той ще се позове на метода за изтегляне на клас Circle. И накрая, s ще посочи обекта от тип Triangle и ще се позове на метода за изтегляне в клас Triangle. Методите се наричат в зависимост от обектите. Следователно обектът се използва за разрешаване на извикване на метод в Късно свързване. Информацията, необходима за свързване, се предоставя по време на изпълнение, така че скоростта на изпълнение е по-бавна в сравнение с ранното свързване.
Ранно обвързване срещу късно обвързване | |
Процесът на използване на информация за класа за разрешаване на извикване на метод, който се случва по време на компилиране, се нарича Early Binding. | Процесът на използване на обекта за разрешаване на извикване на метод, който се случва по време на изпълнение, се нарича Късно свързване. |
Време на обвързване | |
Ранното свързване се случва по време на компилиране. | Късното обвързване се случва по време на изпълнение. |
Функционалност | |
Early Binding използва информацията за класа, за да разреши повикването на метода. | Късното свързване използва обекта за разрешаване на извикване на метод. |
Синоними | |
Ранното свързване е известно още като статично свързване ... | Късното свързване е известно също като динамично свързване. |
явление | |
Методите за претоварване са свързани чрез използване на ранно свързване. | Отменените методи са свързани чрез използване на късно свързване. |
Скорост на изпълнение | |
Скоростта на изпълнение е по-бърза при ранно свързване. | Скоростта на изпълнение е по-ниска при късно свързване. |
OOP се използва обикновено за разработка на софтуер. Един основен стълб на ООП е полиморфизмът. Ранното обвързване и късното обвързване са свързани с това. Ранното свързване се извършва по време на компилиране, докато късно свързване се извършва по време на изпълнение. При претоварване на метода свързването става с помощта на ранното свързване. При метода на отмяна, свързването става с помощта на късното свързване. Разликата между Early и Late Binding е, че Early Binding използва информацията за класа, за да разреши извикването на метод, докато Late Binding използва обекта за разрешаване на метод за извикване.
1.Java Интервю 04 - Статично подвързване срещу динамично свързване срещу VS, Уроци по Mahika, 27 декември 2017 г. Налични тук
2.Динамичен метод за изпращане в Java | Основен урок на Java | Studytonight. Предлага се тук