Method overloading in Java allows multiple methods to have the same name but different parameters. It increases readability of code. Methods can be overloaded by changing the number of arguments or their data types but not by only changing the return type. Two examples are provided: 1) a sum method is overloaded to take 2 ints or 3 ints. 2) an add method is overloaded to take ints or doubles. It is not possible to overload by only changing the return type due to ambiguity. Some valid and invalid cases of overloading are discussed based on argument lists and data types.