Вступ до статичного зв'язування та динамічного зв'язування

Це два типи зв'язування. Прив'язка означає зв'язок виклику методу з тілом методу. У статичній прив'язці все призначення та декларація відбувається під час компіляції. У них багато плюсів і мінусів один над одним. У продуктивності статичне зв'язування краще, ніж динамічне зв'язування методів та змінних. Статичне зв'язування також відоме як раннє зв’язування. Як всі ми знаємо, методи Прив'язування, як статичне, приватне та остаточне, відбувається за час компіляції, тоді як у компіляторі динамічного прив'язки не вирішується, який метод буде викликати.
Нижче наведений приклад - кращий приклад для розуміння

Приклад №1

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
static void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
static void start() (
System.out.println("Bike will start now..");
)
)

У наведеному вище прикладі ми бачимо, як статичне прив'язування призначене для запобігання перевантаження класу.

Нижче наведений приклад покаже, як працює Dynamic Binding, тут метод дочірнього класу перекриває батьківський клас

Приклад №2

public class StaticBindingExample (
public static void main(String args()) (
Vehicle veh = new MotorBike();
veh.start();
)
)
class Vehicle (
void start() (
System.out.println("vehicle will start now..");
)
)
class MotorBike extends Vehicle (
void start() (
System.out.println("Bike will start now..");
)
)

У цьому прикладі статики немає в методі старту за методом батьків і дочірній клас, таким чином метод з тим самим іменем буде перекривати метод батьківського класу. Це трапляється завдяки цьому.

На наведеному вище скріншоті наводиться вихід програми.

Чому статичне зв'язування та динамічне зв'язування?

  1. Програмуванню необхідно обробляти різні ситуації за допомогою статичного та динамічного прив'язки.
  2. Встановлення часу компіляції відоме як раннє прив'язування, тобто це означає, коли потрібно оголосити речі під час складання (на самому початку) виконання програми. У динамічному зв’язуванні зв'язування відбувається під час виконання, який також відомий як пізнє зв’язування.
  3. Метод та змінні, визначені як статичні, кінцеві та приватні, відносяться до статичного зв'язування, тоді як віртуальні методи, які зв'язування відбувається під час виконання, відомі як динамічне прив'язування.
  4. Метод Перевантаження / Оператор Перевантаження використовує статичне прив'язування, тому це один з найкращих прикладів його, тоді як при переоціненні використовується динамічне, так що він відомий як найкращий приклад динамічного зв’язування.
  5. У цьому реальний об'єкт ніколи не використовується, тоді як реальний об'єкт, який використовується в динамічному зв’язуванні.

Приклади

У наведеному нижче прикладі ми бачимо, як відбувається статичне зв’язування

Приклад №1

// Реалізація батьківського класу

class Colony(
//Static method to start the electricity of the Colony
public static void start electricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//Static method to start the electricity of Building
public static void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

У вищенаведеній програмі col є еталонною змінною типу класу Colony, що вказує на об'єкт класу Colony. col2 також є еталонною змінною типу класу Colony, але вказує на об'єкт Building Building. Коли компіляція відбувається, тоді як прив'язуючий компілятор ніколи не перевіряє тип об'єкта, він просто перевіряє тип посилальної змінної.

У вищенаведеній програмі, наприклад, col .startElectricity (), компілятор перевіряє, чи існує визначення методу start elektrike () у класі Colony чи ні, тому що col є класом типу Colony. Аналогічно для виклику методу col2.startElectricity (), він перевіряє, чи існує метод запуску електрики () у класі Colony чи ні, оскільки col2 також є класом типу Colony. Він не перевіряє, на який об’єкт вказується col, col2. цей тип зв'язування відомий як статичне зв'язування.

Вихід:

Вищенаведений вихід програми показує, як статичні елементи використовуються для запобігання переопределення.

Приклад №2

У наведеному нижче прикладі ми бачимо, як відбувається динамічне прив'язування протягом часу виконання

// Реалізація батьківського класу

class Colony(
//method to start the electricity of the Colony
void startElectricity()(
//printing the message here
System.out.println("Colony Electricity is On.");
)
)
//Child class implementation
class Building extends Colony(
//method to start the electricity of Building
void startElectricity()(
//printing the message here
System.out.println("Building Electricity is On.");
)
)
public class StaticBindingExample (
public static void main(String args()) (
//Creating object of the parent class type
Colony col = new Colony();
col.startElectricity();
//Creating object of the child class type
Colony col2 = new Building();
col2.startElectricity();
)
)

У наведеній програмі все те саме, що в програмі статичного прикладу, але в цьому прикладі видаляється член методу "статичний". Під час цього буде викликаний метод основного об'єкта, на який вказується col.startElectricity (). Тоді як для виклику col2.startElectricity () буде викликаний метод основного об'єкта, на який вказується col2. Цей тип зв'язування відомий як динамічне зв'язування.

Вихід:

Перевага

  1. Виконання статичного прив'язування ефективніше та швидше, ніж динамічне. Цей компілятор зв'язування знає, що такі типи методів неможливо перекрити.
  2. У статичному прив'язці тип використовується, тоді як динамічне прив'язування використовує об'єкти для прив’язки.
  3. Однією з головних переваг динамічного прив’язки є гнучкість, завдяки гнучкості одна функція може обробляти різні типи об’єктів під час виконання.
  4. У статичному прив'язці вся інформація, необхідна до початку компіляції, тоді як у динамічному прив'язці до часу запуску інформація не залишається доступною.
  5. Статичне прив'язування може здійснюватися за допомогою звичайних функцій, тоді як динамічне прив'язування може бути досягнуте за допомогою віртуальних функцій.

Висновок

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

Рекомендовані статті

Це посібник із статичного зв’язування та динамічного зв’язування. Тут ми обговорюємо вступ, використання та переваги. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. Види веб-хостингу
  2. Перевантаження і перезавантаження в Java
  3. AngularJS Директиви
  4. Поліморфізм на Яві
  5. Статичний метод JavaScript | Робоча | Приклади