質問
動的バインディングの実装がどのように機能するか、また静的バインディングと動的バインディングの違いも理解していますが、動的バインディングの定義に頭を悩ましています。基本的に、ランタイムバインディングタイプ以外です。
解決
基本的に、動的バインディングとは、関数呼び出しのアドレスがアセンブリ言語に変換されるときにプログラムのコードセグメントにハードコードされず、代わりにスタック変数、配列ルックアップなどから取得されることを意味します。
より高いレベルで、コード行がある場合:
foo(bar) //Calls a funciton
コンパイル時に正確にこれが呼び出す関数を知ることができる場合、これは静的バインディングです。 fooがコンパイル時にわからないことによって複数の関数を意味する場合、これは動的バインディングです。
他のヒント
私は、それが多型で明らかであることを理解しています。通常、基本クラスから派生する複数のクラスを作成する場合。派生クラスのそれぞれに、それぞれが使用する関数が含まれている場合。基本クラスは、派生クラスの関数を実行するために使用でき、適切な関数を適切に呼び出します。
例:
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();
}
印刷: 横糸 ニャー
うまくいけば、それが助けになると思います。
所属していません StackOverflow