I used to think that method overloading had no place in OOP, but there are
certainly use cases where it could be used. I agree a new method with a new
name is preferable, but sometimes that's not the most ideal.

Here's an example I thought of that method overloading would solve...

If you've used as3-signals you're familiar with this line of code:

someObject.mySignal.dispatch("A string arg", 5); // Where someObject = new
Signal(String, Number);

I love signals, and I've used them for a while in my projects. However,
when writing APIs with signals, like I did with MongoAS3 (), the signal
objects become a little annoying for new users because the IDE does not
code hint the dispatch class. The user has to either look through ASDocs
(which I haven't made for my lib) or they have to look through the source,
and find the object instantiation for "mySignal" so they know what type of
payload arguments the Signal is expecting.

If we had method overloading I could do this:

override public function dispatch(username:String, anID:Number):void
{
    ...
}

Then the user would not have to figure out that there are decorator methods
around dispatch(), they can always use the same method for all Signal
objects, and the IDE would tell them exactly what type of arguments the
method expects.

That's just one example I've thought of... and I get that I can make a
method called dispatchMySignalWithAStringAndANumber()... but yea... I'd
much prefer to overload the method than have a bunch of methods like that,
maybe I'm crazy and have spent too much time in Android/Java.

-omar

Reply via email to