2008-11-02 69 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(); 
} 

會打印: 緯 喵

我解釋希望它幫助。