Diferencia entre la vinculación estática y la vinculación dinámica

Diferencia clave - estática Enlace vs Enlace Dinámico
 

Los lenguajes de programación como Java y C # admiten la programación orientada a objetos (OOP). Permite construir software utilizando objetos. Hay muchos objetos en un sistema de software o un programa. Estos objetos tienen atributos y métodos. Los atributos describen las características. Los métodos describen las acciones que puede realizar el objeto. Los datos se pasan a través de objetos utilizando métodos. Los valores requeridos se envían a través de llamadas de método con parámetros. La implementación del método real está en la definición del método. Hay un enlace entre una llamada al método y la definición del método. Se conoce como vinculante. Hay dos tipos de enlaces. Son enlaces estáticos y enlaces dinámicos. los diferencia clave entre enlace estático y enlace dinámico es que, en el enlace estático, el enlace se resuelve en el momento de la compilación, mientras que el enlace dinámico se resuelve en el tiempo de ejecución, que es el tiempo real de ejecución. Este artículo discute la diferencia entre estos dos mecanismos de unión..

CONTENIDO

1. Resumen y diferencia clave
2. Qué es la vinculación estática
3. ¿Qué es la vinculación dinámica?
4. Similitudes entre la vinculación estática y la vinculación dinámica
5. Comparación lado a lado - Enlace estático vs Enlace dinámico en forma tabular
6. Resumen

Qué es la vinculación estática?

El enlace es el enlace entre una llamada al método y las definiciones del método..

Figura 01: Enlace estático y enlace dinámico

Consulte el siguiente programa escrito en Java.

clase pública A

public void method1 ()

System.out.println ("Método 1");

public void method2 ()

System.out.println ("Método2");

public static void main (String [] args)

A obj = new A ();

obj.method1 ();

obj.method2 ();

De acuerdo con el programa anterior, se crea un objeto de tipo A. Entonces se llama a method1 y method2. Identificar qué método debe llamar para la ejecución se conoce como enlace. La declaración obj.method1 () llamará a method1 () y obj.method2 () llamará a method2 (). Este enlace es vinculante.

En el enlace estático, el compilador resuelve el enlace en tiempo de compilación. También es conocido como unión temprana. La vinculación ocurre antes de que realmente se ejecute un programa. La unión estática se produce en la sobrecarga de métodos. Consulte el siguiente programa escrito en Java.

cálculo del vacío público

suma vacía pública (int x, int y)

System.out.println ("Suma es", x + y);

suma pública anulada (doble x, doble y)

System.out.println ("Suma es", x + y);

public static void main (String [] args)

Cálculo cal = nuevo Cálculo ();

cal.sum (2,3);

cal.sum (5.1, 6.4);

De acuerdo con el programa anterior, al pasar los dos enteros, se invocará el método con dos enteros. Al pasar dos valores dobles, se invocará el método correspondiente a dos valores dobles. Este proceso de unión se produce en el momento de la compilación. El compilador sabe que debe llamar al método de suma con dos valores enteros para cal.sum (2,3). Para cal (5.1,6.4), llamará al método de suma con dos valores dobles. Toda la información requerida se conoce antes del tiempo de ejecución, por lo que aumenta la eficiencia del programa y la velocidad de ejecución.

¿Qué es la vinculación dinámica??

En Dynamic Binding, el compilador no resuelve el enlace en el momento de la compilación. La vinculación se produce en tiempo de ejecución. También es conocido como encuadernación tardía. La vinculación dinámica se produce en el método de anulación. Consulte el programa escrito en Java.

Forma de clase pública ()

sorteo de vacío público ()

System.out.println ("Dibujar forma");

clase pública Círculo () extiende Forma

sorteo de vacío público ()

System.out.println ("Dibujar círculo");

Triángulo de clase pública () extiende Forma

sorteo de vacío público ()

System.out.println ("Dibujar triángulo");

Prueba de clase pública

public static void main (String [] args)

Forma s;

s = nueva forma ();

s.draw ();

s = círculo nuevo ();

s.draw ();

s = triángulo nuevo ();

s.draw ();

De acuerdo con el programa anterior, la clase Shape tiene un método draw (). Clase Círculo y clase Triángulo extiende la clase Forma. Class Circle y class Triangle pueden heredar los atributos y métodos de la clase Shape. Por lo tanto, la clase Forma es la super clase o la clase padre. Class Circle y Class Triangle son subclases o clases derivadas. Estas clases también tienen el método draw () con sus propias implementaciones. Por lo tanto, el método draw () en la súper clase se anula.

En el método principal, se invocan diferentes objetos. Hay una variable de referencia de tipo Shape, que es s. Entonces, s invoca el método de acuerdo con la clase específica. En el momento de la compilación, el compilador solo referirá el método de dibujo de súper clase. Cuando comienza la ejecución real, llevará a la ejecución de diferentes métodos de dibujo. Primero, s estará apuntando al objeto de tipo Shape. Por lo tanto, invocará el método de dibujo en la clase Shape. Luego, la s apuntará el objeto de tipo Círculo e invocará el método de dibujo de la clase Círculo. Finalmente, s se referirá al objeto de tipo Triángulo, e invocará el método de dibujo en la clase Triángulo. A pesar de que la variable de referencia es de tipo Shape, el enlace depende del tipo de objeto. Este concepto es conocido como Dynamic Binding. La información se proporciona en tiempo de ejecución, por lo que la velocidad de ejecución es más lenta en comparación con el enlace estático.

¿Cuál es la similitud entre la vinculación estática y la vinculación dinámica??

  • Ambos están relacionados con un polimorfismo que permite que un objeto se comporte de múltiples maneras..

¿Cuál es la diferencia entre el enlace estático y el enlace dinámico??

Enlace Estático vs Enlace Dinámico

El enlace estático es el tipo de enlace que recopila toda la información requerida para llamar a una función durante el tiempo de compilación. El enlace dinámico es el tipo de enlace que recopila toda la información requerida para llamar a una función durante el tiempo de ejecución.
 Tiempo de encuadernación
La vinculación estática se produce en tiempo de compilación. La vinculación dinámica se produce en tiempo de ejecución.
Funcionalidad
La vinculación estática utiliza información de tipo para la vinculación. El enlace dinámico utiliza objetos para resolver para enlazar.
 Objeto real
El enlace estático no utiliza un objeto real para el enlace. Enlace dinámico, use el objeto real para el enlace.
Sinónimos
La unión estática también se conoce como unión temprana. La vinculación dinámica también se conoce como vinculación tardía.
Ejecución
La velocidad de ejecución es rápida en enlace estático.. La velocidad de ejecución es baja en enlace dinámico..
Ejemplo
La vinculación estática se utiliza en la sobrecarga de métodos.. La vinculación dinámica se utiliza en el método de anulación.

Resumen - Estático Enlace vs Enlace Dinámico 

Hay un enlace entre una llamada al método y la definición del método. Se conoce como vinculante. Hay dos tipos de enlaces llamados enlaces estáticos y enlaces dinámicos. La diferencia entre el enlace estático y el enlace dinámico es que en el enlace estático, el enlace se resuelve en el momento de la compilación, mientras que el enlace dinámico se resuelve en el tiempo de ejecución, que es el tiempo real de ejecución. Como la información requerida se proporciona antes del tiempo de ejecución, el enlace estático se ejecuta rápidamente en comparación con el enlace dinámico.

Descarga el PDF de Static Binding vs Dynamic Binding

Puede descargar la versión en PDF de este artículo y utilizarla para fines fuera de línea según la nota de cita. Descargue la versión en PDF aquí: Diferencia entre enlace estático y enlace dinámico

Referencia:

1. Entrevista a Java 04 - Enlace estático y enlace dinámico, tutoriales de Mahika, 27 de diciembre de 2017. Disponible aquí