Різниця між статичним зв'язуванням та динамічним зв'язуванням

Ключова різниця - статична Зв'язування проти динамічного прив'язки
 

Мови програмування, такі як Java та C #, підтримують об'єктно-орієнтоване програмування (OOP). Це дозволяє будувати програмне забезпечення за допомогою об'єктів. У програмній системі чи програмі багато об’єктів. Ці об'єкти мають атрибути та методи. Атрибути описують характеристики. Методи описують дії, які може виконувати об’єкт. Дані передаються через об'єкти методами. Необхідні значення надсилаються через виклики методу з параметрами. Фактична реалізація методу полягає у визначенні методу. Існує зв'язок між викликом методу та визначенням методу. Він відомий як зв'язування. Існує два типи палітурки. Вони є статичним зв'язуванням та динамічним зв'язуванням. The ключова різниця між статичним зв'язуванням і динамічним зв'язуванням є те, при статичному зв'язуванні зв'язування вирішується під час компіляції, тоді як динамічне зв'язування вирішується під час виконання, який є фактичним часом виконання. У цій статті йдеться про різницю між цими двома механізмами зв'язування.

ЗМІСТ

1. Огляд та ключові відмінності
2. Що таке статичне зв'язування
3. Що таке динамічне зв'язування
4. Подібність між статичним зв'язуванням та динамічним зв'язуванням
5. Порівняльне порівняння - статичне зв'язування проти динамічного зв’язування в табличній формі
6. Підсумок

Що таке статичне зв'язування?

Прив'язка - це зв'язок між викликом методу та визначеннями методу.

Малюнок 01: Статичне зв'язування та динамічне зв'язування

Дивіться програму нижче, написану на Java.

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

метод публічної недійсності1 ()

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

public void method2 ()

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

public static void main (String [] args)

A obj = новий A ();

obj.method1 ();

obj.method2 ();

Відповідно до вищевказаної програми створюється об’єкт типу A. Тоді викликаються метод1 і метод2. Визначення того, який метод повинен вимагати виконання, відомий як прив'язка. Заява obj.method1 () викличе method1 (), а obj.method2 () викликає method2 (). Це посилання є обов'язковим.

При статичному зв'язуванні зв'язування вирішується компілятором під час часу. Він також відомий як раннє зв’язування. Прив’язка відбувається до того, як програма фактично працює. Статичне зв’язування відбувається в методі перевантаження. Дивіться програму нижче, написану на Java.

Розрахунок публічної недійсності

загальнодоступна сума недійсності (int x, int y)

System.out.println ("Сума", 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 () розширює форму

публічна недійсна нічия ()

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 буде посилатися на об’єкт типу Triangle, і він буде викликати метод малювання в класі Triangle. Навіть незважаючи на те, що контрольна змінна має тип Shape, прив'язка залежить від типу об'єкта. Ця концепція відома як Динамічне прив'язування. Інформація надається під час виконання, тому швидкість виконання є повільнішою порівняно зі статичним зв'язуванням.

Яка схожість між статичним зв'язуванням та динамічним зв'язуванням?

  • І те й інше пов'язане з поліморфізмом, який дозволяє об’єкту поводитись у декілька способів.

Яка різниця між статичним зв'язком та динамічним зв'язуванням?

Статичне зв'язування проти динамічного зв’язування

Статичне прив'язування - це тип прив'язки, який збирає всю необхідну інформацію для виклику функції під час компіляції. Динамічне прив'язування - це тип прив'язки, який збирає всю необхідну інформацію для виклику функції під час виконання.
 Час зв’язування
Статичне зв'язування відбувається під час компіляції. Динамічне зв'язування відбувається під час виконання.
Функціональність
Статичне прив'язування використовує інформацію про тип для зв'язування. Динамічне прив'язування використовує об'єкти для вирішення зв'язку.
 Фактичний об’єкт
Статичне зв'язування не використовує фактичний об'єкт для зв'язування. Динамічне прив'язування, використовуйте фактичний об'єкт для прив’язки.
Синоніми
Статичне зв'язування також відоме як раннє зв'язування. Динамічне зв'язування також відоме як пізнє зв'язування.
Виконання
Швидкість виконання швидка в статичному зв’язуванні. Швидкість виконання динамічного зв’язування низька.
Приклад
Статичне зв'язування використовується в методі перевантаження. Динамічне зв'язування використовується при переоціненні методу.

Підсумок - Статичний Зв'язування проти динамічного прив'язки 

Існує зв'язок між викликом методу та визначенням методу. Він відомий як зв'язування. Існує два типи зв'язок, які називаються статичним зв'язком та динамічним зв'язуванням. Різниця між статичним зв'язуванням і динамічним зв'язуванням полягає в тому, що при статичному зв'язуванні зв'язування вирішується в момент компіляції, тоді як динамічне зв'язування вирішується під час виконання, який є фактичним часом виконання. Оскільки необхідна інформація надається перед часом виконання, статичне зв'язування є швидким у виконанні порівняно з динамічним зв'язуванням.

Завантажте PDF статичного зв’язування проти динамічного зв’язування

Ви можете завантажити PDF-версію цієї статті та використовувати її в офлайн-цілях відповідно до посилань. Завантажте PDF-версію тут: Різниця між статичним зв'язком та динамічним зв'язуванням

Довідка:

Інтерв'ю 1.Java 04 - Статичне зв'язування Vs Dynamic Binding, Mahika Підручники, 27 грудня 2017. Доступно тут