Skip to main content

動的バインディングとは何ですか?

Computer Computer Scienceでは、名前のバインディングは、関数や変数名などの識別子とコードまたはデータのセクションとの関連です。最も一般的なシナリオである静的バインディングでは、このマッピングはコンパイル時に知られています。動的バインディングでは、関数によってマッピングされたオブジェクトはコンパイル時間では知られておらず、プログラムの実行時にのみ決定できます。このため、動的結合は後期結合とも呼ばれます。動的結合は静的バインディングでは利用できない柔軟性を提供しますが、静的バインディングよりもパフォーマンスコストも伴います。多型により、同じ方法名をさまざまな方法で実装できます。コードがコンパイル時間で正確な方法を決定できないような方法で記述されていない場合、動的バインディングを使用する必要があります。たとえば、すべての形状には領域があるため、形状クラスにはgetareaと呼ばれるメソッドがある場合があります。ただし、形状の円のサブクラスは、正方形のサブクラスとは異なる方法でGetareaを実装します。したがって、新しいオブジェクトがタイプ形状の作成され、コードがその形状のメソッドをgetareaと呼び出す場合、コンパイラは形状が円と正方形であるかどうかを知る方法がないため、わかりません。どのgetareaメソッドを呼び出すか。これは動的バインディングの例です。これは、プログラムがオブジェクトがどのような形状であるかを知っている後、正しいGetareaメソッドが実行時にのみマッピングされるためです。利用される。形状の例では、このロジックを明示的に使用することにより、動的結合を避けるためにコードを書き込むことができます。形状が円の場合は、Circles getareaメソッドを呼び出します。それ以外の場合、形状が正方形の場合は、正方形の特定のGetareaメソッドを呼び出します。動的なバインディングの利点は、コードが代替よりもクリーンで保守可能であることです。静的結合の例では、コードの複製があり、新しいタイプの形状が追加されるたびにコードを更新する必要があります。静的バインディングでは、コンパイラはどのコードを呼び出すかを正確に把握し、コードを最適化してより効率的に実行できます。タイプの安全性は問題になる可能性があります。これは、動的結合のいくつかの実装では、メソッドをサポートしないオブジェクトでメソッドを呼び出すことができるためです。たとえば、getareaメソッドは、形状ではないため、getareaメソッドがないオブジェクトで呼び出され、実行時エラーが発生する可能性があります。静的バインディングは、コンパイルエラーを上げることにより、このシナリオを妨げます。