Forums Register Login

Question regarding method signature and overriding.

+Pie Number of slices to send: Send
Hello,

Methods cannot be overloaded based on the return types alone. That makes sense as the compiler will not be in a position to differentiate which method is invoked.

In the case of overriding something similar is applicable. Why cannot a method which is overriding in a derived class not permitted to have a different return type? The compiler will be able to make out the overriding method but then why does it care about the return types matching?

Cheers,
Raj.

+Pie Number of slices to send: Send
Because of polymorphism. You could have a variable of the type of the superclass which actually refers to an instance of the subclass. Suppose you could do this:

Then look at this:
+Pie Number of slices to send: Send
Jesper is absolutely right. Just one note:
From Java 5 you can use covariant return types.
It means that a method in a subclass may return an object whose type is a subclass of the type returned by the method with the same signature in the superclass.
+Pie Number of slices to send: Send
Which can be of great use in methods like clone(). For instance, Date.clone() could have returned a Date, thereby removing the need for casts. Sun however were either lazy or they simply forgot to change the declared return types for just about every method that could have used it. It's not like returning Date from Date.clone() would have broken any code, it just would have made all the casts unnecessary.
+Pie Number of slices to send: Send
Thanks everyone!
Aaaaaand ... we're on the march. Stylin. Get with it tiny ad.
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 1060 times.
Similar Threads
OO Ques
doubt -chapter 2 K& B -self test -q no 8
true/false
overloading - basics
What are bridge methods in Java?
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 29, 2024 09:09:57.