java static binding_Static and dynamic binding in java

Before I explain static and dynamic binding in java, lets discuss few terms which will help you to understand the concepts better.

What is reference and object?

classHuman{....}classBoyextendsHuman{publicstaticvoidmain(Stringargs[]){/*This statement simply creates an object of class

*Boy and assigns a reference of Boy to it*/Boyobj1 =newBoy();/* Since Boy extends Human class. The object creation

* can be done in this way. Parent class reference

* can point to a child class object*/Humanobj2 =newBoy();}}

Static and Dynamic Binding in Java

Association of method definition to the method call is known as binding. There are two types of binding: Static binding and dynamic binding. Lets discuss them one by one.

Static Binding or Early Binding

The binding which can be resolved at compile time by compiler is known as static or early binding. All the static, private and final methods have always been bonded at compile-time. Why binding of Static, final and private methods is always a static binding?You would understand it better after reading dynamic binding. Still let me explain this – Compiler knows that all such methods cannot be overridden and will always be accessed by object of local class. Hence compiler doesn’t have any difficulty to determine object of class (local class for sure). That’s the reason binding for such methods is static.

Static binding example

classHuman{....}classBoyextendsHuman{publicvoidwalk(){System.out.println("Boy walks");}publicstaticvoidmain(Stringargs[]){Boyobj1 =newBoy();obj1.walk();}}

Here we have created an object of Boy class and calling the method walk() of the same class. Since nothing is ambiguous here, compiler would be able to resolve this binding during compile-time, such kind of binding is known as static binding.

Dynamic Binding or Late Binding

When compiler is not able to resolve the call/binding at compile time, such binding is known as Dynamic or late Binding. Overriding is a perfect example of dynamic binding as in overriding both parent and child classes have same method. Thus while calling the overridden method, the compiler gets confused between parent and child class method(since both the methods have same name).

Dynamic binding example

Here Human is a super class and Boy is a child class since Boy extends Human. Both these classes have a same method void walk(). Since we have assigned the parent class reference to the child class object, during call of walk() method the compiler would not be able to decide which walk() method to call. It will be confused between the walk()method of Human class and walk() method of Boy class. Such kind of bindings are known as dynamic binding as compiler figures out the object type in runtime.

packagebeginnersbook.com;classHuman{publicvoidwalk(){System.out.println("Human walks");}}classBoyextendsHuman{publicvoidwalk(){System.out.println("Boy walks");}publicstaticvoidmain(Stringargs[]){//Reference is of parent classHumanmyobj =newBoy();myobj.walk();}}

Output:

Boywalks

Static Binding vs Dynamic Binding

Lets discuss the difference between static and dynamic binding in Java.

Static binding happens at compile-time while dynamic binding happens at runtime.

Binding of private, static and final methods always happen at compile time since these methods cannot be overridden. Binding of overridden methods happen at runtime.

Java uses static binding for overloaded methods and dynamic binding for overridden methods.

That’s all I have regarding static and dynamic binding in java. Let me know if you have any questions regarding it.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值