Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Static binding Vs Dynamic Binding Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Static binding Vs Dynamic Binding" Watch "Static binding Vs Dynamic Binding" New topic
Author

Static binding Vs Dynamic Binding

seshu kumar
Greenhorn

Joined: Jun 13, 2002
Posts: 23
Here is a code snippet


And output is

Shouldnt both method calls give Child Parent Version using Dynamic binding
Deepali Pate
Ranch Hand

Joined: Mar 20, 2002
Posts: 114
I think in this particular ? there is no need of binding coz the method is invoked using the same reference.
You are passing reference var to the methods and it chosses the method that is most specific to the argument type passed.
So that explains the nature of o/p.
Am i right??
seshu kumar
Greenhorn

Joined: Jun 13, 2002
Posts: 23
Ya,
It looks like a dynamic binding but isnt.
It is a case of pure method invocation and i think it is resolved at compile time itself.
Similar example

Whats will the result be?
Deepali Pate
Ranch Hand

Joined: Mar 20, 2002
Posts: 114
String version will be printed as that is more specific down the inheritence.
But if u replaced the Object bit by an object of StringBuffer it will give error. Coz though even StringBuffer can have null value but it does not belong to the hierarchy so becomes ambigious.
Amir Ghahrai
Ranch Hand

Joined: Jun 19, 2002
Posts: 110
seshu,
in your first code snippet, I don't see the definition of method in neither the Parent class nor the Child class. therefore, the method from the Test class is invoked depending on the argument type.
The general rule for dynamic method lookup is that the method invoked, depends on the class of the reference, and not its compile-time type. Had you had a definition of method in both your Parent and Child classes, then dynamic binding will go to work and will call the methods from appropriate classes.


Amir
Anthony Villanueva
Ranch Hand

Joined: Mar 22, 2002
Posts: 1055
According to the JLS:
When a method is invoked (�15.12), the number of actual arguments and the compile-time types of the arguments are used, at compile time, to determine the signature of the method that will be invoked (�15.12.2).
So for overloaded methods, you use the object reference type, not the type of the object at runtime, in this particular case.
 
Don't get me started about those stupid light bulbs.
 
subject: Static binding Vs Dynamic Binding
 
Similar Threads
Var args question...
Doubt in overloading & overriding
Problem -- Virtual Method Invocation
override a static method / Cast
clarification on why the modifier private changes output..