動的束縛
日本語 | 動的束縛 |
英語 | dynamic binding |
ふりがな | どうてきそくばく |
フリガナ | ドウテキソクバク |
ポリモーフィズムによって、呼ばれるメソッドが動的に決定されること。
「静的束縛」と対になる単語。メソッドを呼び出す際に、そのメソッドが動的に変化する、つまり実行中の状況によって異なることを指す。
「動的束縛」という言葉は非常に分かりにくい。
「動的束縛」はdynamic bindingの訳であり、bindingは「束縛」というよりは「結び付ける」という表現の方が近い。
普通のメソッド(非staticなメソッド)は、参照型のメソッドではなく、インスタンスが持つメソッドが呼び出される。つまり「動的」に、呼び出されるメソッドが「結び付けられ」、そのメソッドが呼び出されるわけである。
「静的束縛」と対になる単語。メソッドを呼び出す際に、そのメソッドが動的に変化する、つまり実行中の状況によって異なることを指す。
「動的束縛」という言葉は非常に分かりにくい。
「動的束縛」はdynamic bindingの訳であり、bindingは「束縛」というよりは「結び付ける」という表現の方が近い。
普通のメソッド(非staticなメソッド)は、参照型のメソッドではなく、インスタンスが持つメソッドが呼び出される。つまり「動的」に、呼び出されるメソッドが「結び付けられ」、そのメソッドが呼び出されるわけである。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// たとえばObjectクラスのhashCode()メソッドの場合。
Object object = null;
// object変数に入っているのがSampleクラスの
// インスタンスへの参照の場合。
object = new Sample();
System.out.println( object.hashCode() );
// ハッシュ値として「参照値」が出力されます。
// object変数に入っているのがStringクラスの
// インスタンスへの参照の場合。
object = new String( "A" );
System.out.println( object.hashCode() );
// 65
// StringクラスでオーバーライドされたhashCode()
// メソッドは全く違う結果を返します。
// このように、object変数のhashCode()メソッドを
// 呼び出す際に、動的に「実際に呼び出すメソッド」を
// 結び付けているわけです。これが「動的束縛」です。
}
}
public class Sample
{
public static void main( String[] args )
{
// たとえばObjectクラスのhashCode()メソッドの場合。
Object object = null;
// object変数に入っているのがSampleクラスの
// インスタンスへの参照の場合。
object = new Sample();
System.out.println( object.hashCode() );
// ハッシュ値として「参照値」が出力されます。
// object変数に入っているのがStringクラスの
// インスタンスへの参照の場合。
object = new String( "A" );
System.out.println( object.hashCode() );
// 65
// StringクラスでオーバーライドされたhashCode()
// メソッドは全く違う結果を返します。
// このように、object変数のhashCode()メソッドを
// 呼び出す際に、動的に「実際に呼び出すメソッド」を
// 結び付けているわけです。これが「動的束縛」です。
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // たとえばObjectクラスのhashCode()メソッドの場合。 Object object = null; // object変数に入っているのがSampleクラスの // インスタンスへの参照の場合。 object = new Sample(); System.out.println( object.hashCode() ); // ハッシュ値として「参照値」が出力されます。 // object変数に入っているのがStringクラスの // インスタンスへの参照の場合。 object = new String( "A" ); System.out.println( object.hashCode() ); // 65 // StringクラスでオーバーライドされたhashCode() // メソッドは全く違う結果を返します。 // このように、object変数のhashCode()メソッドを // 呼び出す際に、動的に「実際に呼び出すメソッド」を // 結び付けているわけです。これが「動的束縛」です。 } }