Method overloading
- Last Updated: March 30, 2020
- 2 minute read
- OpenEdge
- Version 12.2
- Documentation
Method overloading allows a class to define multiple methods with the same name, but different signatures. That is, it allows you to define different methods that have the same name, but that respond to correspondingly different messages sent to an instance of the class.
The following figure shows an example of overloading where a ClassA defines two overloads of a MethodA( ).

In this example, the two methods return similar data as an output parameter, but one of them takes an input parameter that allows the method to conditionally change the data before returning it. The only requirement for the overloading to work, different method signatures, is satisfied by the additional input parameter in one of methods.
There is no requirement that overloaded methods have any functional relationship to each other, and they can, in fact, each implement behavior that is totally unrelated to the others. However, method overloading provides a notational convenience that allows you to define similar (but different) methods that provide a related set of behaviors (indicated by the same method name), but where access to a given implementation of the behavior requires a different set of parameters.
For a practical example using a Shape super
class, a method to calculate the area of a shape really requires
a different signature, depending on the shape. So, for example,
to calculate the area of a rectangle, you need two values, its length and
width, but to calculate the area of a circle, you need only one
value, its radius. Therefore, for Shape, you might
define two overloads of an Area( ) method,
one that takes two numeric parameters (parm1 and parm2) and one that takes
a single numeric parameter (parm).
Then, when calculating the area of a rectangle, you call the Area(parm1,parm2) overload
of the method with a definition that calculates the area from a
length and width. When calculating the area of a circle, you call
the Area(parm) overload
of the method with a definition that calculates the area from a
radius.
Note that this example can also rely on the polymorphic overriding
of every Area( ) method overload in each
subclass. For example, in order for each subclass to respond when
a particular Area( ) overload does not
apply, the super class implementation of these methods can be defined
to raise an error message indicating that the method does not apply
to the given subclass. Invoking code can simply call each method
overload, and respond accordingly. For more information on polymorphism,
see Polymorphism.