Static Binding and Dynamic Binding
Connecting a method call to the
method body is known as binding.
There are two types of binding
- static
binding (also known as early binding).
- dynamic
binding (also known as late binding).
Understanding Type
Let's understand the type of
instance.
1) variables have a type
Each variable has a type, it
may be primitive and non-primitive.
1. int data=30;
Here data variable is a type of
int.
2) References have a type
1. class Dog{
2. public static void main(String args[]){
3. Dog d1;//Here d1 is a type of Dog
4. }
5. }
3) Objects have a type
An
object is an instance of particular java class,but it is also an instance of
its superclass.
|
1. class Animal{}
2.
3. class Dog extends Animal{
4. public static void main(String args[]){
5. Dog d1=new Dog();
6. }
7. }
Here
d1 is an instance of Dog class, but it is also an instance of Animal.
|
static
binding
When type of the object is
determined at compiled time(by the compiler), it is known as static binding.
If there is any private, final
or static method in a class, there is static binding.
Example of
static binding
1. class Dog{
2. private void eat(){System.out.println("dog is eating...");}
3.
4. public static void main(String args[]){
5. Dog d1=new Dog();
6. d1.eat();
7. }
8. }
Dynamic binding
When type of the object is
determined at run-time, it is known as dynamic binding.
Example of
dynamic binding
1. class Animal{
2. void eat(){System.out.println("animal is eating...");}
3. }
4.
5. class Dog extends Animal{
6. void eat(){System.out.println("dog is eating...");}
7.
8. public static void main(String args[]){
9. Animal a=new Dog();
10. a.eat();
11. }
12. }
Output:dog is eating...
In
the above example object type cannot be determined by the compiler, because
the instance of Dog is also an instance of Animal.So compiler doesn't know
its type, only its base type.
|
This is very nice work done by the blogger. Actually, this is the complete work of the blogger on this topic. After reading this article, one could easily under the real difference between static and dynamic binding used in Java programming
ReplyDelete