Binding 理解动态绑定

Binding 理解动态绑定,binding,computer-science,Binding,Computer Science,我了解动态绑定的实现是如何工作的,也了解静态绑定和动态绑定之间的区别,我只是很难理解动态绑定的定义。基本上,它是一种运行时绑定类型。我理解它在多态性中很明显。通常在创建从基类派生的多个类时。如果每个派生类都包含各自使用的函数。基类可以用来执行派生类的函数,并且可以正确地调用正确的函数 例如: class Animal { void talk(); } class Dog extends Animal { public void talk() { System.out.println("woof

我了解动态绑定的实现是如何工作的,也了解静态绑定和动态绑定之间的区别,我只是很难理解动态绑定的定义。基本上,它是一种运行时绑定类型。

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

例如:

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();
}
将打印: 汪汪 喵喵


我的解释希望能有所帮助。

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

在更高级别,如果您有一行代码:

foo(bar) //Calls a funciton

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

你是说动态绑定而不是动态链接吗?