Diferencia clave: enlace estático frente a 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 usando métodos. Los valores requeridos se envían a través de llamadas a métodos con parámetros. La implementación real del método se encuentra en la definición del método. Existe un vínculo entre una llamada a un método y una definición de método. Se conoce como vinculante. Hay dos tipos de enlaces. Son enlace estático y enlace dinámico. La diferencia clave 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 momento real de la ejecución. Este artículo analiza la diferencia entre estos dos mecanismos vinculantes.
¿Qué es la vinculación estática?
Binding es el vínculo entre la llamada a un método y las definiciones de métodos.
Figura 01: Enlace estático y enlace dinámico
Consulte el siguiente programa escrito en Java.
clase pública A{
método de anulación pública 1(){
Sistema.fuera.println(“Método1”);
}
método vacío público2(){
Sistema.fuera.println(“Método2”);
}
public static void main(String argumentos){
A obj=nueva A();
obj.método1();
obj.método2();
}
}
Según el programa anterior, se crea un objeto de tipo A. Luego se llama al método1 y al método2. Identificar qué método debe llamar para la ejecución se conoce como vinculación. La sentencia obj.method1() llamará al método1() y obj.method2() llamará al método2(). Este enlace es vinculante.
En el enlace estático, el compilador resuelve el enlace en tiempo de compilación. También se conoce como enlace temprano. El enlace ocurre antes de que un programa se ejecute realmente. El enlace estático se produce en la sobrecarga de métodos. Consulte el siguiente programa escrito en Java.
Cálculo de vacío público{
suma de vacío público(int x, int y){
System.out.println(“La suma es “, x+y);
}
suma pública nula(doble x, doble y){
System.out.println(“La suma es “, x+y);
}
public static void main(String argumentos){
Cálculo cal=nuevo Cálculo();
cal.sum(2, 3);
cal.suma(5.1, 6.4);
}
}
Según 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 vinculación se produce en el momento de la compilación. El compilador sabe que debe llamar al método sum 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 tiempo de compilación. El enlace se produce en tiempo de ejecución. También se conoce como enlace tardío. El enlace dinámico se produce en la anulación de métodos. Consulte el programa escrito en Java.
forma de clase pública(){
sorteo nulo público(){
System.out.println(“Dibujar forma”);
}
}
la clase pública Circle() extiende Forma{
sorteo nulo público(){
System.out.println(“Dibujar círculo”);
}
}
clase pública Triángulo() extiende Forma{
sorteo nulo público(){
System.out.println(“Dibujar triángulo”);
}
}
Prueba de clase pública{
public static void main(String argumentos){
Forma s;
s=nueva Forma();
s.draw();
s=nuevo Círculo();
s.draw();
s=nuevo Triángulo();
s.draw();
}
}
Según el programa anterior, la clase Shape tiene un método draw(). Class Circle y class Triangle extienden la clase Shape. La clase Circle y la clase Triangle pueden heredar los atributos y métodos de la clase Shape. Por lo tanto, la clase Shape es la superclase o 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, se anula el método draw() en la superclase.
En el método principal, se invocan diferentes objetos. Hay una variable de referencia de tipo Forma, que es s. Luego, s invoca el método según la clase específica. En el momento de la compilación, el compilador solo hará referencia al método de dibujo de superclase. Cuando comience la ejecución real, conducirá a la ejecución de diferentes métodos de sorteo. Primero, s estará apuntando al objeto de tipo Forma. Por lo tanto, invocará el método de dibujo en la clase Shape. Luego, la s señalará 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 dibujar en la clase Triángulo. Aunque la variable de referencia es del tipo Shape, el enlace depende del tipo de objeto. Este concepto se conoce como enlace dinámico. 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 el enlace estático y el enlace dinámico?
Ambos están relacionados con un polimorfismo que permite que un objeto se comporte de múltiples formas
¿Cuál es la diferencia entre el enlace estático y el enlace dinámico?
Enlace estático frente a enlace dinámico |
|
El enlace estático es el tipo de enlace que recopila toda la información necesaria para llamar a una función durante el tiempo de compilación. | La vinculación dinámica es el tipo de vinculación que recopila toda la información necesaria para llamar a una función durante el tiempo de ejecución. |
Tiempo de encuadernación | |
El enlace estático ocurre en tiempo de compilación. | La vinculación dinámica ocurre en tiempo de ejecución. |
Funcionalidad | |
La vinculación estática utiliza información de tipo para la vinculación. | La vinculación dinámica utiliza objetos para resolver la vinculación. |
Objeto real | |
La vinculación estática no utiliza un objeto real para la vinculación. | Enlace dinámico, use el objeto real para enlazar. |
Sinónimos | |
La vinculación estática también se conoce como vinculación anticipada. | 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 | |
El enlace estático se utiliza en la sobrecarga de métodos. | El enlace dinámico se utiliza en la anulación de métodos. |
Resumen: enlace estático frente a enlace dinámico
Hay un vínculo entre la llamada a un método y la definición del método. Se conoce como vinculante. Hay dos tipos de enlaces llamados enlace estático y enlace dinámico. 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 tiempo de 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.
Descargue el PDF de enlace estático frente a enlace dinámico
Puede descargar la versión en PDF de este artículo y usarla sin conexión según la nota de la cita. Descargue la versión en PDF aquí: Diferencia entre enlace estático y enlace dinámico