Разница между статическим и динамическим связыванием

Ключевая разница - статическая Связывание против динамического связывания
 

Языки программирования, такие как Java и C #, поддерживают объектно-ориентированное программирование (ООП). Это позволяет создавать программное обеспечение с использованием объектов. В программной системе или программе много объектов. Эти объекты имеют атрибуты и методы. Атрибуты описывают характеристики. Методы описывают действия, которые могут быть выполнены объектом. Данные передаются через объекты с использованием методов. Требуемые значения отправляются через вызовы методов с параметрами. Реальная реализация метода находится в определении метода. Существует связь между вызовом метода и определением метода. Это известно как связывание. Есть два типа привязок. Это статическое и динамическое связывание. ключевое отличие между статическим и динамическим связыванием является то, что, в статической привязке привязка разрешается во время компиляции, тогда как динамическая привязка разрешается во время выполнения, которое является фактическим временем выполнения. В этой статье обсуждается разница между этими двумя механизмами связывания.

СОДЕРЖАНИЕ

1. Обзор и основные отличия
2. Что такое статическое связывание
3. Что такое динамическое связывание
4. Сходства между статическим и динамическим связыванием
5. Сравнение бок о бок - статическое и динамическое связывание в табличной форме
6. Резюме

Что такое статическое связывание?

Привязка - это связь между вызовом метода и определениями метода.

Рисунок 01: Статическое и динамическое связывание

См. Нижеприведенную программу, написанную на Java.

открытый класс A

public void method1 ()

System.out.println ( «Method1»);

public void method2 ()

System.out.println ( «Method2»);

public static void main (String [] args)

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

obj.method1 ();

obj.method2 ();

В соответствии с вышеприведенной программой создается объект типа А. Затем вызывается method1 и method2. Определение того, какой метод должен вызывать выполнение, называется связыванием. Оператор obj.method1 () вызовет method1 (), а obj.method2 () вызовет method2 (). Эта ссылка обязательна.

В статической привязке привязка разрешается компилятором во время компиляции. Это также известно как раннее связывание. Связывание происходит до того, как программа действительно запускается. Статическое связывание происходит при перегрузке метода. См. Нижеприведенную программу, написанную на Java.

Public Void Расчет

public void sum (int x, int y)

System.out.println («Сумма есть», x + y);

public void sum (double x, double y)

System.out.println («Сумма есть», x + y);

public static void main (String [] args)

Расчет cal = новый расчет ();

cal.sum (2,3);

кал.сум (5.1, 6.4);

В соответствии с вышеприведенной программой, при передаче двух целых чисел будет вызван метод с двумя целыми числами. При передаче двух двойных значений будет вызван метод, соответствующий двум двойным значениям. Этот процесс связывания происходит во время компиляции. Компилятор знает, что он должен вызвать метод sum с двумя целочисленными значениями для cal.sum (2,3). Для cal (5.1,6.4) он вызовет метод sum с двумя двойными значениями. Вся необходимая информация известна до выполнения, поэтому она повышает эффективность и скорость выполнения программы..

Что такое динамическое связывание?

В динамическом связывании компилятор не разрешает связывание во время компиляции. Связывание происходит во время выполнения. Это также известно как позднее связывание. Динамическое связывание происходит при переопределении метода. Обратитесь к программе, написанной на Java.

открытый класс Shape ()

public void draw ()

System.out.println («Нарисовать фигуру»);

открытый класс Circle () расширяет форму

public void draw ()

System.out.println («Нарисовать круг»);

открытый класс Triangle () расширяет форму

public void draw ()

System.out.println («Нарисовать треугольник»);

открытый класс Test

public static void main (String [] args)

Форма с;

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

s.draw ();

s = новый круг ();

s.draw ();

s = новый треугольник ();

s.draw ();

Согласно приведенной выше программе, класс Shape имеет метод draw (). Класс Circle и класс Triangle расширяют класс Shape. Класс Circle и класс Triangle могут наследовать атрибуты и методы класса Shape. Следовательно, класс Shape является суперклассом или родительским классом. Класс Circle и Class Triangle являются подклассами или производными классами. Эти классы также имеют метод draw () со своими собственными реализациями. Поэтому метод draw () в суперклассе переопределяется.

В основном методе вызываются разные объекты. Существует ссылочная переменная типа Shape, которая является s. Затем s вызывает метод в соответствии с определенным классом. Во время компиляции компилятор будет ссылаться только на метод рисования суперкласса. Когда фактическое выполнение начинается, это приведет к выполнению различных методов рисования. Сначала s будет указывать на объект типа Shape. Следовательно, он вызовет метод draw в классе Shape. Затем s будет указывать на объект типа Circle и вызовет метод draw класса Circle. Наконец, s будет ссылаться на объект типа Triangle и вызовет метод draw в классе Triangle. Хотя ссылочная переменная имеет тип Shape, привязка зависит от типа объекта. Эта концепция известна как динамическое связывание. Информация предоставляется во время выполнения, поэтому скорость выполнения ниже по сравнению со статическим связыванием.

В чем сходство между статическим и динамическим связыванием?

  • Оба они связаны с полиморфизмом, который позволяет объекту вести себя по-разному.

В чем разница между статическим и динамическим связыванием?

Статическое связывание против динамического связывания

Статическое связывание - это тип связывания, который собирает всю необходимую информацию для вызова функции во время компиляции.. Динамическое связывание - это тип связывания, который собирает всю необходимую информацию для вызова функции во время выполнения..
 Время связывания
Статическое связывание происходит во время компиляции. Динамическое связывание происходит во время выполнения.
функциональность
Статическое связывание использует информацию о типе для связывания. Динамическое связывание использует объекты для разрешения связывания.
 Актуальный объект
Статическая привязка не использует фактический объект для привязки. Динамическое связывание, используйте фактический объект для связывания.
Синонимы
Статическое связывание также известно как раннее связывание. Динамическое связывание также называется поздним связыванием.
выполнение
Скорость выполнения в статической привязке высока. Скорость выполнения низкая в динамическом связывании.
пример
Статическая привязка используется при перегрузке метода. Динамическое связывание используется в переопределении метода.

Резюме - Статический Связывание против динамического связывания 

Существует связь между вызовом метода и определением метода. Это известно как связывание. Существует два типа привязок: статическая привязка и динамическая привязка. Разница между статической привязкой и динамической привязкой заключается в том, что в статической привязке привязка разрешается во время компиляции, тогда как динамическая привязка разрешается во время выполнения, которое является фактическим временем выполнения. Поскольку необходимая информация предоставляется до выполнения, статическое связывание выполняется быстрее по сравнению с динамическим связыванием..

Загрузить PDF-файл статического связывания и динамического связывания

Вы можете скачать PDF-версию этой статьи и использовать ее в автономном режиме согласно примечанию. Пожалуйста, загрузите PDF версию здесь: Разница между статическим и динамическим связыванием

Ссылка:

1.Java Interview 04 - Статическое связывание и динамическое связывание, учебные пособия по Mahika, 27 декабря 2017 г. Доступно здесь