| Author |
Overriding
|
Pinki Roy
Greenhorn
Joined: May 16, 2008
Posts: 14
|
|
Answer is class B - return D
The explanation given in the mock answers is
Explanations : From J2SE 5.0 onwards. You are now allowed to override the return type of a method with a subtype of the original type.
My problem is that but class D does not come in the hierarchy so why do we get this answer?
|
 |
Vadim Vararu
Ranch Hand
Joined: Jan 03, 2009
Posts: 144
|
|
So, till the JAVA SE5 the rule was: when you override a method, the overriding method has to return exactly the same type as the overridden one!
Beginning with JAVA SE5 the rule is: when you override a method, the overriding method has to return any type that is in relation IS-A with the type returned by the overridden method.
So, till JAVA SE5 i could not do this:
Beginning with JAVA SE5 this is legal, because Number and Integer are covariant return types.
So, in your code the class D extends the class C, so if the overridden method returns C, it's quite legal that the overriding method returns D.
Have a good day, Vadim.
|
If you think you've done too much, usually it means you've done too few.
|
 |
Pinki Roy
Greenhorn
Joined: May 16, 2008
Posts: 14
|
|
Vadim Vararu wrote:So, till the JAVA SE5 the rule was: when you override a method, the overriding method has to return exactly the same type as the overridden one!
Beginning with JAVA SE5 the rule is: when you override a method, the overriding method has to return any type that is in relation IS-A with the type returned by the overridden method.
So, till JAVA SE5 i could not do this:
Beginning with JAVA SE5 this is legal, because Number and Integer are covariant return types.
So, in your code the class D extends the class C, so if the overridden method returns C, it's quite legal that the overriding method returns D.
Have a good day, Vadim.
Thanks you so much Vadim, for clearing my concept.
|
 |
 |
|
|
subject: Overriding
|
|
|