Method Overloading

Let us see what Method Overloading is in java & how do we use it…
  • Two or more methods in a class can have the same name, if their argument lists are different


  • Argument list could differ in –
  • Number of parameters
  • Data type of parameters
  • Sequence of data type of parameters
  • This feature we call it as Method Overloading/Static Polymorphism
  • Overloading in java occurs when methods in a same class or in child classes shares a same name with a ‘difference in number of arguments’ or ‘difference in argument type’ or both.

Now, let me ask all of you few questions:

  • Can method overloading occur between methods in a parent class and that of the child class?
  • Answer: Yes, absolutely.


  • Does method overloading depend upon the return type of the methods
  • Answer: No.

Method Overloading Examples:
  • Example 1 – Difference in number of parameters


Output:  1st method



  • Example 2 – Another example to show methods in child classes can also have method overloading
                             


      





                        

 





 









Output:  2nd method

      Now, let us see the cases in which Method overloading is not performed –
Methods having same name in one class or in child class could not perform method overloading if they are just different in:

1)  Name of argument, and not in number of arguments or type of arguments.
2)  Having different return type only.


  • At this point of time, many of you might be thinking How method overloading helps in java or I can say Why we need method overloading?
      There are 2 points which comes out –
  • It helps in maintaining consistency in method naming, doing same task with just a difference of input parameter.
  • Helps in reducing overhead of remembering the name of different functions for same task, instead what we can do is we can pass different type or number of parameters to a single overloaded method/function.


Example –


public class ABC
{


public Employee getEmpById(int empId)
{
}
public Employee getEmpByName(int empName)
{
}
public Employee getEmpByDob(int empDob)
{
}
}


 /*It’s better to overload methods with same functionality, this make the 
code consistent and reduce overhead of remember method names with 
 different type and number of input parameter.*/ 


Instead write the code as –


public class ABC
{


public Employee getEmp(int empId)
{
}
public Employee getEmp(int empName)
{
}
public Employee getEmp(int empDob)
{
}
}


            
        One important point to note:
  • We can overload static and final method in java but we can’t override static method.

At the end, a small refresher on the interview questions related to overloading which might be asked from the java developers –

  • Can main() method be overloaded in java?
  • Answer:  Yes. The main() method can be overload. But if you change the signature of the main method, the entry point for the program will be dimnished.




Post a Comment