In method overloading we can define many methods with the same name but different signatures. A method signature is the combination of the method's name along with the number, type and order of the parameters. When we call overloaded methods, a compiler automatically determines which method should be used to perform similar task but with different input parameters.