質問

の違いは何ですかびbinding?

役に立ちましたか?

解決

その答えが早い(静的)の結合はコンパイル時間の結合と後期(または動的bindingは実行時結合(例えばご利用の際は反射).

他のヒント

に作成言語の違いは顕.

Java:

//early binding:
public create_a_foo(*args) {
 return new Foo(args)
}
my_foo = create_a_foo();

//late binding:
public create_something(Class klass, *args) {
  klass.new_instance(args)
}
my_foo = create_something(Foo);

最初の例では、コンパイラであらゆるっきりものコンパイルす。第二に、あなただけのいい誰方法を採っていを遂行します。(もちろん最新情報をメールにてお届けしJVMsを支援 Class<? extends Foo> klass 構造を大幅に削減できることリスクです。)

もう一つのIdeでhotlinkのクラス定義がいるので、それらの宣言にある、方法。にcreate_something(Foo)が 非常に この方法で定義さい方法を定義できるだけシンプルに見えるを実施します。

の最大の強みは遅くな結合はこのような反転の制御が容易などの特定の使用その他の多型と鴨-タイピングを使用した場合は、言語に対応しない?

められた http://word.mvps.org/fAQs/InterDev/EarlyvsLateBinding.htm

るには二つの方法があります使用の自動化(またはOLEオートメーション)へ プログラム制御にも応用。

遅めの結合に用CreateObject作のインスタンス アプリケーションオブジェクトでした。例えば、 新しいインスタンスのExcelを利用下旬binding:

 Dim oXL As Object
 Set oXL = CreateObject("Excel.Application")

一方で、操作は既存のExcelのインスタンスの場合 エクセルは既にオープン)を使うのGetObject(問わずか を使うのではなく結合):

 Dim oXL As Object
 Set oXL = GetObject(, "Excel.Application")

使用初期の結合は、まず設定する必要の参考に プロジェクトに応募したいの操作.のVB編 当オフィスのアプリケーション、またはVBで、これにより選択 ツール+参照し、選択したアプリケーションをしたいから リストなど"Microsoft Excel8.0オブジェクト図書館").

新しいExcelのインスタンスを初期binding:

 Dim oXL As Excel.Application
 Set oXL = New Excel.Application

いずれの場合も、ちなみに、まずは既存の のインスタンスを、そのエラーを返しまることができる、新しい インスタンスにエラーハンドラです。

類似のものより詳細な解答からハーバート-Schildt C++書:-

初期の結合はイベントで発生するコンパイルす。本質的には、早めの結合が起きるのに必要な情報通話機能はコンパイルす。(言い換えると、初期の結合このオブジェクトは、関数呼び出して行きの中で作成する。) 具合などの通常の関数呼び出しを含む標準ライブラリ機能向け)、過負荷機能を呼び出し、過剰な負担です。の主な利点を早期に結合する。めに必要な情報を関数を呼び出が決定してコンパイル時に、これらの種類の関数呼び出しています。

反対側の結合が遅れます。下旬に結合とは 機能することを待っている"ということは解決します。仮想機能を使用するため下旬に結合する。ご存知のとおり、アクセスがよりベースポインタを参考に、仮想関数が実際には、呼び出される定型のオブジェクトが示すポインタです。がほとんどのケースにおいて、この確定できないコンパイル時に、オブジェクトの機能にリンクしていませんでます。の主な利点を結合する柔軟性です。とは異なり早く、遅く結合できるプログラム作成に対応できるイベント中に発生したプログラムを実行せずに作成 大量の"緊急コード"。 意することで機能を呼び出しは解決しないまま実行時に、結合ができるためにやや遅実行す。しかし今日、高速のコンピュータ数を大幅に削減することができ、実行時に関連しめます。

に解釈される言語の違いものだったので、少し微妙です。

Ruby

# early binding:
def create_a_foo(*args)
  Foo.new(*args)
end
my_foo = create_a_foo

# late binding:
def create_something(klass, *args)
  klass.new(*args)
end
my_foo = create_something(Foo)

でRubyは一般には、編成、というものはありませんコンパイラのnifty前のもの。の成長をJRubyとがRubyで作成これらの日でも、法のようなJavaます。

のIdeはまだ立って:あいうプラットフォームEclipseできるようにクラス定義の場合ハードコードができないのままにした場合には、呼び出し側に返します。

反転のコントロールできないものすごく人気のRubyかの極端な場合には実行時の柔軟性がレールには、利用下旬に結合量削減のための設定を得るために必要な申請す。

public class child()
{    public void method1()
     {     System.out.println("child1");
     }
    public void method2()
     {     System.out.println("child2");
     }

}
public class teenager extends child()
{    public void method3()
     {      System.out.println("teenager3");
     }
}
public class adult extends teenager()
{     
    public void method1()
    {    System.out.println("adult1);
         super.method1();
     }
}


//In java
public static void main(String []args)
{    ((teenager)var).method1();
}

このまま印刷して

adult1
child1

初期結合をコンパイラにアクセスのすべての方法 子どもやティーンエイジャー が遅いとの結合(実行時までのチェック方法がオーバーライド を行います。

そのためmethod1(お子様から--初期結合)を上書きするためのメソッドですのmethod1から大人の実行時(後期結) それを実施します。method1から子どもがありませんのでmethod1にmethod1にチャイルド、ティーンエイジ.

った場合、子を持たなかったmethod1のコードをメインにないコンパイル。

のコンパイル時間の多型とも呼ばれ、過負荷または早期に結合あるいは静的な結合して設立されました同じ名前のメソッドの異なる行動です。の実施により、複数の試作と同様の方法とは異なる動作が発生します。初期の結合とは、最初に作成します。が下旬に結合オブジェクトがランタイムが発生します。られるものと動的に結合、またはオーバーライドまたはランタイム多型.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top