Programming Tutorials

Method Overloading in Java

By: aathishankaran in Java Tutorials on 2007-03-06  

In java it is possible to define two or more methods within the same class that share the same name, as long as their parameter declarations are different. When this is the case, the methods are said to be overloaded, and the process is referred to as method overloading. Method overloading is one of the ways that java implements polymorphism. If you have never used a language that allows the overloading of methods, then the concept may seem strange at first. But as you will see, method overloading is one of java's most exciting and useful features.

When an overloaded method is invoked, java uses the type and/ or number of arguments as its guide to determine which version of the overloaded method to actually call. Thus, overloaded methods may have different return types; the return type alone is insufficient to distinguishing two versions of a method. When java encounters a call to an overloaded method, it simply executes the version of the method whose parameters match the arguments used in the call.

Here is a simple that illustrates method overloading:

class OverloadDemo {

    void test() {
        System.out.println("No Parameters");
    }

    void test(int a) {
        System.out.println("a: " + a);
    }

    void test(int a, int b) {
        System.out.println("a and b: " + a + " " + b);
    }

    double test(double a) {
        System.out.println("double a: " + a);
        return a * a;
    }
}

class Overload {

    public static void main(String args[]) {
        OverloadDemo ob = new OverloadDemo();
        double result;
        ob.test();
        ob.test(10);
        ob.test(10, 20);
        result = ob.test(123.25);
        System.out.println("Result of ob.test(123.2): " + result);
    }
}

This program generates the following output

No parameters
a: 10
a and b: 10 20
double a: 123.25
Result of ob.test(123.25): 15190.5625

As you can see, test() is overloaded four times. The first version takes no parameters, the second takes one integer parameter, the third takes two integer parameters, and the fourth takes one double parameter. The fact that the fourth version of test() also returns a value is of no consequence relative to overloading, since return types do not play a role in overload resolution.

When an overloaded method is called, java looks for a match between the arguments used to call the method and the method's parameters. However, this match need no always be exact.






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in Java )

Latest Articles (in Java)