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

コンピューターサイエンスでは、名前のバインディングは、関数や変数名などの識別子のコードまたはデータのセクションとの関連です。最も一般的なシナリオである静的バインディングでは、このマッピングはコンパイル時に知られています。動的バインディングでは、関数によってマッピングされたオブジェクトはコンパイル時間では知られておらず、プログラムの実行時にのみ決定できます。このため、動的結合は後期結合とも呼ばれます。動的結合は静的バインディングでは利用できない柔軟性を提供しますが、静的バインディングよりも多くのパフォーマンスコストも伴います。

動的結合は、オブジェクト指向プログラミングの一部である多型と密接に関連しています。多型により、同じ方法名をさまざまな方法で実装できます。コードがコンパイル時間で正確な方法を決定できないような方法で記述されていない場合、動的バインディングを使用する必要があります。

たとえば、「形状」CLASSには、すべての形状に領域があるため、「Getarea」と呼ばれる方法がある場合があります。ただし、「shape」の「円」サブクラスは、「getarea」を「正方形」サブクラスとは異なる方法で実装します。したがって、新しいオブジェクトがタイプ「形」で作成され、コードがその形状のメソッド「getarea」を呼び出す場合、コンパイラは形状が円と正方形であるかどうかを知る方法がないため、どのgetareaメソッドを呼び出すかわかりません。これは動的バインディングの例です。これは、正しいGetareaメソッドが実行時にのみマッピングされるため、プログラムがオブジェクトの形状の種類を知っている後、

動的結合により、どの特定の実装が使用されるかを知らずに、抽象的なメソッドを使用する柔軟性が可能になります。 「形状」の例では、このロジックを明示的に使用することにより、動的結合を避けるためにコードを書き込むことができます。形状が円の場合、円のgetareaメソッドを呼び出します。それ以外の場合、形状が正方形の場合は、特定のgetareaメソッドを呼び出します正方形。動的なバインディングの利点は、コードが代替よりもクリーンで保守可能であることです。静的結合の例では、コードの複製があり、新しいタイプの形状が追加されるたびにコードを更新する必要があります。

動的結合の欠点は性能と安全性です。静的バインディングでは、コンパイラはどのコードを呼び出すかを正確に把握し、コードを最適化してより効率的に実行できます。タイプの安全性は問題になる可能性があります。これは、動的結合のいくつかの実装では、メソッドをサポートしないオブジェクトでメソッドを呼び出すことができるためです。たとえば、「getarea」メソッドは、形状ではなく、したがって「getarea」メソッドがないオブジェクトで呼び出され、実行時エラーが発生する可能性があります。静的バインディングは、コンパイルエラーを上げることにより、このシナリオを防ぎます。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?