| 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.
|
 |
 |
|
|
subject: Static binding Vs Dynamic Binding
|
|
|