Resolution of Overloaded Functions

Resolution of Overloaded Functions

Let’s say we have an overloaded function called fun():

 void fun(string) { system.out.println("String"); }void fun(int) { system.out.println("Int"); }void fun(double) { system.out.println("Double"); }void fun(float) { system.out.println("float"); }

If we call fun(37) how does the system choose which function toexecute? Basically it chooses based on type conversions.The parameter 37 is an [int]eger and may be converted to a [double] or[float] by “widening”, but cannot be converted to a [string], sofun(string) is not executed.

Choosing between the last 3 is a bit more tricky: The system willchoose the type which can be most easily converted into the other two(i.e: via widening). An [int] can be widened into both [float] and[double]; A [double] can be widened into a [float] but cannot beconverted to an [int]; A [float] cannot be converted to either. Thusfun(int) will be chosen.

Basically, any invocation of fun(int); can be handled by bothfun(double); and fun(float);

 Take another example:void fun(int, double) { }void fun(double, int) { }

And fun(1,2); is called. The system will drop an ambiguity error,since it won’t know what to do here.

Understanding this mechanism is all well and fine, but it is notadvisable to overload a function with types like [int] and [double]since it starts getting tricky and logical errors may start coming in.

See also  Small Business Strategies with Venmo

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist