Java Static and Dynamic Binding

Association of the method call to the method body is known as binding. There are two types of binding in java:

  • Static binding.
  • Dynamic bindinng.

1. Static Binding or Early Binding:

The binding that resolved at compile time is known as Static Binding or Early Binding. There are three methods that cannot be overridden and the type of the class is determined at the compile time. They are static, private and final methods. They are bind at compile time. In this type, the compiler knows the type of object or class to which object belongs to during the execution.

Let see an example of Static Binding or Early Binding:


In this above example, two objects are created (sup, sub) of different types referring to the same class type(SuperClass type). Here the display() method of SuperClass is static, and therefore compiler knows that it will not be overridden in subclasses and also knows which display() method to call and hence no ambiguity.

2. Dynamic Binding or Late Binding:

The binding that resolved at run time is known as Static Binding or Late Binding. The perfect example of this would be Overriding. Consider a method overriding where parent class and child class has the same method.

In the following example, the overriding of a method is possible because no methods are declared static, private and final.