We can have more than one method with the same name as long as they differ either in number of parameters or type of parameters. This is called method overloading as discussed earlier.
While calling an overloaded method it is possible that type of the actual parameters passed may not match exactly with the formal parameters of any of the overloaded methods. In that case parameters are promoted to next higher type till a match is found. If no match is found even after promoting the parameters then a compilation error occurs.
Example: The following program overloads the method area() to find the area of a circle, square, rectangle and a triangle.
1 class Area
2 { static final double PI = 3.1415;
3 static double area(double radius) //area of circle
4 { return PI * radius * radius;
5 }
6 static float area(float size) // area of square
7 { return size * size;
8 }
9 static float area(float length, float width) // area of rectangle
10 { return length * width;
11 }
12 static float area(float a, float b, float c) // area of triangle
13 { float s = (a+b+c)/2;
14 float area = (float) Math.sqrt(s * (s-a) * (s-b) * (s-c));
15 return area;
16 }
17 public static void main(String a[])
18 { double carea = area(3.0); //Circle’s area() method is invoked
19 System.out.println(carea);
20 float sarea = area(3.0f); //Square’s area() method is invoked
21 System.out.println(sarea);
22 float rarea = area(3.0f,4.0f); //Rectangle’s area() method is invoked
23 System.out.println(rarea);
24 float tarea = area(3.0f,4.0f,5.0f); //Triangle’s area() method is invoked
25 System.out.println(tarea);
26 // next higher type matching with the parameter is float
27 float area = area(3); //Squares’s area() method is invoked
28 System.out.println(area);
29 area = area(3,4); //Rectangle’s area() method is invoked
30 System.out.println(area);
31 area = area(3,4,5); //Triangles’s area() method is invoked
32 System.out.println(area);
33 }
34 }
While calling an overloaded method it is possible that type of the actual parameters passed may not match exactly with the formal parameters of any of the overloaded methods. In that case parameters are promoted to next higher type till a match is found. If no match is found even after promoting the parameters then a compilation error occurs.
Example: The following program overloads the method area() to find the area of a circle, square, rectangle and a triangle.
1 class Area
2 { static final double PI = 3.1415;
3 static double area(double radius) //area of circle
4 { return PI * radius * radius;
5 }
6 static float area(float size) // area of square
7 { return size * size;
8 }
9 static float area(float length, float width) // area of rectangle
10 { return length * width;
11 }
12 static float area(float a, float b, float c) // area of triangle
13 { float s = (a+b+c)/2;
14 float area = (float) Math.sqrt(s * (s-a) * (s-b) * (s-c));
15 return area;
16 }
17 public static void main(String a[])
18 { double carea = area(3.0); //Circle’s area() method is invoked
19 System.out.println(carea);
20 float sarea = area(3.0f); //Square’s area() method is invoked
21 System.out.println(sarea);
22 float rarea = area(3.0f,4.0f); //Rectangle’s area() method is invoked
23 System.out.println(rarea);
24 float tarea = area(3.0f,4.0f,5.0f); //Triangle’s area() method is invoked
25 System.out.println(tarea);
26 // next higher type matching with the parameter is float
27 float area = area(3); //Squares’s area() method is invoked
28 System.out.println(area);
29 area = area(3,4); //Rectangle’s area() method is invoked
30 System.out.println(area);
31 area = area(3,4,5); //Triangles’s area() method is invoked
32 System.out.println(area);
33 }
34 }