:結合動的実行時に発生しながら、Javaで結合
1結合静的と動的との間Link
いくつかの重要な違い)静的は、コンパイル時に発生します。
2)プライベート、最終および静的メソッドおよび変数は静的バインディングを使用し、コンパイラによって結合され、仮想メソッドは実行時オブジェクトに基づいて実行時に結合されます。
3)静的バインディングはType(JavaのClass)情報をバインディングに使用し、動的バインディングはObjectを使用してバインディングを解決します。
3)オーバーロードされたメソッドは静的バインディングを使用して結合され、オーバーライドされたメソッドは実行時に動的バインディングを使用して結合されます。 Javaの
public class StaticBindingTest
{
public static void main(String args[])
{
Collection c = new HashSet();
StaticBindingTest et = new StaticBindingTest();
et.sort(c);
}
//overloaded method takes Collection argument
public Collection sort(Collection c)
{
System.out.println("Inside Collection sort method");
return c;
}
//another overloaded method which takes HashSet argument which is sub class
public Collection sort(HashSet hs)
{
System.out.println("Inside HashSet sort method");
return hs;
}
}
出力で
静的バインディング例:ダイナミックの内部コレクションのソート方法
の例の出力はJavaのに
public class DynamicBindingTest
{
public static void main(String args[])
{
Vehicle vehicle = new Car(); //here Type is vehicle but object will be Car
vehicle.start(); //Car's start called because start() is overridden method
}
}
class Vehicle
{
public void start()
{
System.out.println("Inside start method of Vehicle");
}
}
class Car extends Vehicle
{
@Override
public void start()
{
System.out.println("Inside start method of Car");
}
}
バインディング:Insideは、車の方法を開始します
多相ステートメントについて知っていれば、 'instanceof'を使うことができます –