2008-11-02 73 views
3

我明白动态绑定的实现是如何工作的,还有静态绑定和动态绑定之间的区别,我只是无法围绕动态绑定的定义进行包装。基本上除了它是一个运行时绑定类型。了解动态绑定

+0

你说的是动态绑定而不是动态链接? – 2008-11-02 23:25:03

回答

3

基本上,动态绑定意味着函数调用的地址在被转换为汇编语言时并不会硬编码到程序的代码段中,而是从别处获取,即堆栈变量,数组查找等。

在一个较高的水平,如果你有一行代码:

foo(bar) //Calls a funciton 

如果它可以在编译时确切地知道什么功能,这将调用,这是静态绑定。如果foo可能意味着多个函数,这取决于编译时不可知的事情,这是动态绑定。

1

我明白它在多态性中是明显的。通常在创建派生自基类的多个类时。如果每个派生类都包含每个使用的函数。基类可以用来执行派生类的函数,它将正确地调用正确的函数。

例如:

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

会打印: 纬 喵

我解释希望它帮助。