I don‘t really see a significant difference between overloaded methods and a single method with a sum type (where, in the general case, the sum is over the parameter-list tuple types of the overloaded methods). One can interpret the former as syntactic sugar for the latter.
back
2 comments
Static vs dynamic dispatch, to start with.
You need default values (and ideally named parameters) to really make them equivalent, but yes, both address a similar set of developer needs.
The java implementation, where it bleeds into bytecode and method scoring in insane ways, is particularly unfortunate.
But it’s not actually syntactic sugar in java. There is a whole concept of type-signature which is part of method look up.
Without overloading lookup would just be via name.