Pregunta

Entiendo cómo funciona la implementación del enlace dinámico y también la diferencia entre el enlace estático y el dinámico, simplemente estoy teniendo problemas para envolver mi cerebro en torno a la definición de enlace dinámico. Básicamente, aparte de que es un tipo de enlace en tiempo de ejecución.

¿Fue útil?

Solución

Básicamente, el enlace dinámico significa que la dirección para una llamada de función no está codificada en el segmento de código de su programa cuando se traduce al lenguaje ensamblador, y en su lugar se obtiene de otra parte, es decir, las variables de la pila, las búsquedas de matrices, etc.

En un nivel superior, si tiene una línea de código:

foo(bar) //Calls a funciton

Si se puede saber en tiempo de compilación exactamente a qué función llamará, esto es un enlace estático. Si foo podría significar múltiples funciones dependiendo de cosas que no se pueden conocer en el momento de la compilación, esto es un enlace dinámico.

Otros consejos

Entiendo que es evidente en el polimorfismo. Normalmente cuando se crean varias clases que derivan de una clase base. Si cada una de las clases derivadas contiene una función que cada una usa. La clase base se puede usar para ejecutar una función de las clases derivadas y se llamará correctamente a la función correcta.

Por ejemplo:

class Animal
{
void talk();
}

class Dog extends Animal
{
public void talk() { System.out.println("woof"); }
}

class Cat extends Animal
{
public void talk() { System.out.println("meow"); }
}

....
Animal zoo[2];
zoo[0] = new Dog();
zoo[1] = new Cat();

for(Animal animalToggle: zoo)
{
animalToggle.talk();
}

imprimirá: guau miau

Espero que mi interpretación ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top