Разница между статической и динамической привязкой

Оглавление:

Разница между статической и динамической привязкой
Разница между статической и динамической привязкой

Видео: Разница между статической и динамической привязкой

Видео: Разница между статической и динамической привязкой
Видео: Разница между статической и динамической этикой. 2024, Май
Anonim

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

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

СОДЕРЖАНИЕ

1. Обзор и основные различия

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

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

4. Сходства между статическим и динамическим связыванием

5. Параллельное сравнение - статическое связывание и динамическое связывание в табличной форме

6. Резюме

Что такое статическая привязка?

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

Разница между статической и динамической привязкой
Разница между статической и динамической привязкой

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

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

public class A {

public void method1 () {

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. Затем вызываются method1 и method2. Определение того, какой метод следует вызывать для выполнения, называется привязкой. Оператор obj.method1 () вызовет method1 (), а obj.method2 () вызовет method2 (). Эта ссылка носит обязательный характер.

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

public void Calculation {

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) {

Calculation cal = new Calculation ();

cal.sum (2,3);

cal.sum (5.1, 6.4);

}

}

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

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

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

public class Shape () {

public void draw () {

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

}

}

открытый класс Circle () расширяет Shape {

public void draw () {

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

}

}

открытый класс Triangle () расширяет Shape {

public void draw () {

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

}

}

public class Test {

public static void main (String args) {

Форма s;

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

s.draw ();

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

s.draw ();

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

s.draw ();

}

}

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

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

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

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

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

Различать статью в середине перед таблицей

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

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

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

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

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

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

Рекомендуем: