Jump to content

Function overloading

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 103.225.132.9 (talk) at 05:13, 25 May 2017 (Complications). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In some programming languages, function overloading or method overloading is the ability to create multiple methods of the same name with different implementations. Calls to an overloaded function will run a specific implementation of that function appropriate to the context of the call, allowing one function call to perform different tasks depending on context.

For example, doTask() and doTask(object O) are overloaded methods. To call the latter, an object must be passed as a parameter, whereas the former does not require a parameter, and is called with an empty parameter field. A common error would be to assign a default value to the object in the second method, which would result in an ambiguous call error, as the compiler wouldn't know which of the two methods to use.

Another appropriate example would be a Print(object O) method. In this case one might like the method to be different when printing, for example, text or pictures. The two different methods may be overloaded as Print(text_object T); Print(image_object P). If we write the overloaded print methods for all objects our program will "print", we never have to worry about the type of the object, and the correct function call again, the call is always: Print(something).

sdkhbalvalkshdbvlaksjdbvlakbvoasklfhbv

Caveats

If a method is designed with an excessive number of overloads, it may be difficult for developers to discern which overload is being called simply by reading the code. This is particularly true if some of the overloaded parameters are of types that are inherited types of other possible parameters (for example "object"). An IDE can perform the overload resolution and display (or navigate to) the correct overload.

Type based overloading can also hamper code maintenance, where code updates can accidentally change which method overload is chosen by the compiler.[1]

See also

References

  1. ^ Bracha, Gilad (September 3, 2009). "Systemic Overload". Room 101.
  • Bertrand Meyer: Overloading vs Object Technology, in Journal of Object-Oriented Programming (JOOP), vol. 14, no. 4, October–November 2001, available online