Здесь: Link
Мало важное различие между статической и динамической привязки
1) Статическое связывание в Java происходит во время компиляции, а динамическое связывание происходит во время исполнения.
2) частные, окончательные и статические методы и переменные используют статическое связывание и связывание компилятором, а виртуальные методы связаны во время выполнения на основе объекта времени выполнения.
3) Статическое связывание использует информацию типа (класс в Java) для привязки, тогда как динамическое связывание использует Object для разрешения привязки.
3) Перегруженные методы связаны с использованием статического связывания, а переопределенные методы связаны с использованием динамического связывания во время выполнения.
Static Binding Пример в 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");
}
}
Выход: Внутри начать метод автомобиля
вы можете использовать 'instanceof', надеясь, что знаете о полиморфных операциях –