 Java lets you define multiple methods with the same name. This is called overloading a method. Here's a method that returns the maximum of two integers. I can call the method using two integers, but if I make a call using two doubles and try to compile it, I get an error. The solution is to create a new method that returns a double that has the same name. As long as the parameter list has either a different number of parameters or different types for those parameters, Java will let me do this. The code inside the method will be exactly the same. Now, when I compile the program, it succeeds. When I make this call with two integers, Java will select this version of the max method to call. When I make this call with two doubles, Java will call this version of the method. What happens if I try this? Three, which is an integer, and 4.7, which is a double. Which one gets called then? The answer is Java figures out which is the best match. The best match is this one, and the reason is because the integer three can be promoted to a double, whereas the 4.7 cannot automatically be converted to an integer. I can even overload to have more parameters. I can have an integer returning method called max that takes three integers, a, b, and c. In this case, the algorithm says take the maximum of a and b and then return the maximum of that value and c. Again, when Java sees this call, it'll find the best match. Since a and b are integers, it'll call this method. And the same will happen here. And I can write a line to test that, the maximum of 7, 10, and 3. Let's compile it. The moral of the story, you can overload a method. You can provide multiple versions, as long as the parameter lists have different lengths or different data types.