¿Cómo usar el enlace dinámico en Java?

Como Usar El Enlace Dinamico En Java



El ' unión dinámica ” permite un comportamiento polimórfico, donde la invocación del método de un objeto se determina en tiempo de ejecución en función del tipo real del objeto, en lugar del tipo de referencia. Promueve la reutilización del código al permitir que las subclases anulen y proporcionen su implementación de métodos definidos en la clase principal.

Este blog demuestra el uso y la implementación del enlace dinámico en Java.

¿Cómo usar el enlace dinámico en Java?

El enlace dinámico permite un acoplamiento flexible entre objetos. Ayuda en la fácil extensión de la funcionalidad al agregar nuevas subclases que anulan los métodos sin modificar el código existente. El enlace dinámico se utiliza ampliamente para el envío en tiempo de ejecución, el manejo de eventos o los sistemas de complementos.







Veamos un par de ejemplos para una explicación detallada:



Ejemplo 1: Implementación de enlaces dinámicos



Mediante el uso de enlaces dinámicos, los programadores pueden permitir que los usuarios personalicen y anulen los comportamientos predeterminados para crear aplicaciones personalizables. Para una implementación práctica, veamos un ejemplo:





importar java.util.Arrays;
importar java.util.HashSet;
importar java.util.List;
import java.util.Set;

clase pública DynBind {
vacío público estático principal ( Cadena [ ] argumentos ) {
Juegos gameType1 = nuevo Cricket ( ) ;
Juegos gameType2 = nuevo CallofDuty ( ) ;
gameType1.gameType ( ) ;
gameType2.gameType ( ) ;
  }
}
clase de juego {
tipo de juego vacío público ( ) {
Sistema.fuera.println ( 'Juegos físicos o virtuales' ) ;
  }
}
clase Cricket extiende el juego {
  @ Anular
tipo de juego vacío público ( ) {
Sistema.fuera.println ( 'El críquet es un juego físico' ) ;
  }
}
La clase CallofDuty amplía los juegos {
  @ Anular
tipo de juego vacío público ( ) {
Sistema.fuera.println ( 'CallofDuty es un juego virtual' ) ;
  }
}

 

Explicación del código anterior:



  • Primero, la clase” DynBind ” se crea, y dos objetos de tipo “ Juego de azar ” se declaran.
  • A continuación, estos objetos se inicializan con nuevos ' Grillo ' y ' Obligaciones ”, esta inicialización demuestra el enlace dinámico. El tipo de referencia es “ Juego de azar ” pero los tipos de objetos reales son “ Grillo ' y ' Obligaciones ”, respectivamente.
  • Ahora, estos objetos se utilizan para invocar el ' tipo de juego() ” anulando la función en las clases secundarias.
  • Entonces, el padre “ Juego de azar Se declara la clase ” que crea e inicializa el “ tipo de juego() ”, que imprime un mensaje de texto ficticio.
  • A continuación, se crean dos clases secundarias con el nombre ' Grillo ' y ' Obligaciones ”. Estas clases se heredan del padre “ Juego de azar ' clase.
  • Después de eso, el “ @Anular ” la anotación se utiliza para anular el padre “ Juego de azar ” métodos de clase llamados “ tipo de juego() ”.
  • Al final, se muestra un mensaje ficticio diferente en ambos métodos anulados de clases secundarias.

 

Después del final de la fase de ejecución:

El resultado muestra que los mensajes ficticios de las clases secundarias se muestran en la consola mediante el enlace dinámico.

Ejemplo 2: Implementación de herencia multinivel

El enlace dinámico también se puede implementar para la creación de herencia multinivel. Dos bloques de código del mismo programa como se muestra a continuación:

clase de juego {
tipo de juego vacío público ( ) {
Sistema.fuera.println ( 'Juegos físicos o virtuales' ) ;
  }
}
clase Cricket extiende el juego {
  @ Anular
tipo de juego vacío público ( ) {
Sistema.fuera.println ( 'El críquet es un juego físico' ) ;
  }
formato de reproducción de vacío público ( ) {
Sistema.fuera.println ( 'El cricket tiene diferentes formatos de juego' ) ;
  }
}
La clase CallofDuty amplía los juegos {
  @ Anular
tipo de juego vacío público ( ) {
Sistema.fuera.println ( 'CallofDuty es un juego virtual' ) ;
  }
modo de juego vacío público ( ) {
Sistema.fuera.println ( 'CallofDuty tiene múltiples modos de juego' ) ;
  }
}
clase CricketGame extiende Cricket {
modo de juego vacío público ( ) {
Sistema.fuera.println ( 'Cricket tiene modo de juego único' ) ;
  }
}
clase CallofDutyGame extiende CallofDuty {
}

 

Explicación del código anterior:

  • Primero, el padre” Juego de azar Se crea la clase ” e incluye el “ tipo de juego() ” función que contiene un mensaje ficticio.
  • A continuación, dos clases secundarias denominadas “ Grillo ' y ' Obligaciones ”, ambos anulan la función de la clase principal denominada “ tipo de juego() ”.
  • Estas clases contienen una función extra llamada “ formato de reproducción () ' y ' modo de juego() ” funciones, respectivamente.
  • Luego, cree un niño de varios niveles llamado ' CricketJuego “que es extendido por el niño” Grillo ' clase. Contiene el “ modo de juego() ' función que es anulada por su padre ' Grillo ' clase.
  • Después de eso, el “ CallofDutyJuego La clase ” se crea como un elemento secundario para el “ Obligaciones ' clase. Crea una herencia multinivel y permite la funcionalidad de vinculación dinámica.

 

Ahora, inserte el ' principal() ' método:

clase pública DynBind {
vacío público estático principal ( Cadena [ ] argumentos ) {
CallofDutyJuego bacalao = nuevo juego CallofDuty ( ) ;
codg.gameType ( ) ;
codg.gameMode ( ) ;

CricketJuego criar = nuevo juego de críquet ( ) ;
crigg.gameType ( ) ;
crigg.formato de reproducción ( ) ;
crigg.gameMode ( ) ;
  }
}

 

Explicación del código anterior:

  • En primer lugar, un objeto de la “ CallofDutyJuego Se crea una clase que llama a las funciones de sus clases principales.
  • De la misma manera, el “ CricketJuego Se declara el objeto que llama a su función de clase principal que está disponible en varios niveles en la jerarquía.

 

Después del final de la fase de ejecución:

El resultado muestra que la herencia multinivel se crea mediante el enlace dinámico en Java.

Conclusión

En Java, el “ unión dinámica ” ofrece beneficios como polimorfismo, reutilización de código, flexibilidad y extensibilidad. Se implementa siguiendo las reglas de herencia, anulación de métodos y upcasting. El enlace dinámico también habilita funciones de tiempo de ejecución y mejora el comportamiento polimórfico y flexible en el concepto de programación orientada a objetos. Eso es todo sobre el uso y la implementación del enlace dinámico en Java.