我了解动态绑定的实现方式以及静态绑定和动态绑定之间的区别,但我只是在思考动态绑定的定义时遇到了麻烦。基本上除了它是一种运行时绑定类型。
问问题
2407 次
2 回答
3
基本上,动态绑定意味着函数调用的地址在翻译成汇编语言时不会硬编码到程序的代码段中,而是从其他地方获取,即堆栈变量、数组查找等。
在更高的层次上,如果你有一行代码:
foo(bar) //Calls a funciton
如果可以在编译时确切知道这将调用什么函数,这就是静态绑定。如果 foo 可能意味着多个函数,具体取决于编译时不可知的事物,那么这就是动态绑定。
于 2008-11-02T23:28:24.000 回答
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();
}
将打印: woof meow
我的解释希望它有所帮助。
于 2008-11-02T23:28:02.347 回答