Method overloading allows a class to define multiple methods with the same name, but different signatures . That is, it allows you to define different methods that have the same name, but that respond to correspondingly different messages sent to an instance of the class.