動的束縛
| 日本語 | 動的束縛 |
| 英語 | 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()メソッドを
// 呼び出す際に、動的に「実際に呼び出すメソッド」を
// 結び付けているわけです。これが「動的束縛」です。
}
}




