Introducción a la unión estática y la unión dinámica

Estos son dos tipos de encuadernación. El enlace se refiere a la asociación de la llamada al método al cuerpo del método. En el enlace estático, toda la asignación y declaración ocurre en el momento de la compilación. Tienen múltiples ventajas y desventajas entre sí. En rendimiento, el enlace estático es mejor que el enlace dinámico de los métodos y variables. La unión estática también se conoce como unión temprana. Como todos sabemos, los métodos de enlace como estático, privado y final ocurren durante el tiempo de compilación, mientras que en el compilador de enlace dinámico no se decide qué método se llamará.
El siguiente ejemplo es un mejor ejemplo para entender

Ejemplo 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..");
)
)

En el ejemplo anterior, podemos ver cómo el enlace estático está destinado a evitar la sobrecarga de la clase.

El siguiente ejemplo mostrará cómo funciona el enlace dinámico, aquí el método de clase secundaria anula la clase primaria

Ejemplo # 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..");
)
)

En este ejemplo, la estática no está presente en el método de inicio bajo el método de clase padre e hijo, por lo tanto, el método con el mismo nombre anulará el método de clase padre. Sucede debido a esto.

En la captura de pantalla anterior, se proporciona la salida del programa.

¿Por qué enlace estático y enlace dinámico?

  1. Es necesario que la programación maneje diferentes situaciones mediante el uso del enlace estático y dinámico.
  2. La vinculación en tiempo de compilación se conoce como vinculación temprana, es decir, cuando es necesario declarar las cosas en el momento de la compilación (al comienzo) de la ejecución del programa. En Dynamic Binding, Binding se lleva a cabo en el tiempo de ejecución que también se conoce como Enlace tardío.
  3. Método y variables, definidos como estático, final y privado, se refiere al enlace estático, mientras que los métodos virtuales que se llevan a cabo en tiempo de ejecución se conocen como enlace dinámico.
  4. La sobrecarga de métodos / sobrecarga del operador utiliza la vinculación estática, por lo que es uno de los mejores ejemplos de ella, mientras que la anulación utiliza la dinámica, por lo que se conoce como el mejor ejemplo de vinculación dinámica.
  5. En esto, un objeto real nunca se usa mientras que un objeto real se usa en el enlace dinámico.

Ejemplos

En el ejemplo a continuación, podemos ver cómo ocurre el enlace estático

Ejemplo 1

// Implementación de clase primaria

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();
)
)

En el programa anterior, col es la variable de referencia de la clase de tipo Colony que apunta al objeto de la clase Colony. col2 es también la variable de referencia de la clase de tipo Colony, pero apunta al objeto de la clase Building. Cuando tiene lugar la compilación, mientras que el compilador de enlace nunca verifica el tipo de objeto, solo verifica el tipo de variable de referencia.

En el programa anterior, como col .startElectricity (), el compilador verifica si existe la definición del método de electricidad () en la clase Colony o no porque col es del tipo de clase Colony. De manera similar para la llamada al método col2.startElectricity (), comprueba si el método de electricidad () está presente en la clase Colony o no porque col2 también es del tipo clase Colony. No comprueba a qué objeto col, col2 está apuntando. Este tipo de enlace se conoce como enlace estático.

Salida:

El resultado anterior del programa muestra cómo se utilizan los miembros estáticos para evitar la anulación.

Ejemplo # 2

En el siguiente ejemplo, podemos ver cómo se produce el enlace dinámico durante el tiempo de ejecución

// Implementación de clase primaria

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();
)
)

En el programa anterior, todo es igual que en un programa de ejemplo estático, pero en este ejemplo se elimina el miembro del método "estático". Durante esto, se llamará al método del objeto principal al que apunta col.startElectricity (). Mientras que para la llamada col2.startElectricity (), se llamará al método del objeto principal al que apunta col2. Este tipo de enlace se conoce como enlace dinámico.

Salida:

Ventaja

  1. La ejecución de enlace estático es más eficiente y más rápida que la dinámica. Este compilador de enlaces sabe que este tipo de métodos no se pueden anular.
  2. En el enlace estático, el tipo se usa mientras que el enlace dinámico usa objetos para enlaces.
  3. Una de las principales ventajas de Dynamic Binding es la flexibilidad, debido a la flexibilidad de que una sola función puede manejar diferentes tipos de un objeto en tiempo de ejecución.
  4. En el enlace estático, toda la información necesaria antes del tiempo de compilación, mientras que en el enlace dinámico no hay información disponible antes del tiempo de ejecución.
  5. El enlace estático puede llevarse a cabo usando funciones normales, mientras que el enlace dinámico puede lograrse usando las funciones virtuales.

Conclusión

Estos son algunos de los conceptos importantes de la programación orientada a objetos. El enlace se refiere a la ejecución del código. Sucede en el momento de la compilación, mientras que el enlace dinámico ocurre en el tiempo de ejecución. Definición, declaración y alcance de la declaración, estos son tres pilares importantes de la vinculación estática, mientras que en la vinculación dinámica, el nombre de la vinculación y la vida útil de la vinculación son importantes.

Artículos recomendados

Esta es una guía de enlace estático y enlace dinámico. Aquí discutimos la introducción, usos y ventajas. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Tipos de alojamiento web
  2. Sobrecarga y anulación en Java
  3. Directivas AngularJS
  4. Polimorfismo en Java
  5. Método estático de JavaScript | Trabajando | Ejemplos