Method overloading allows a class to have multiple methods with the same name but different parameters. When you call a method, the program checks the method name and looks for a version with matching argument types and count. If it finds one, it runs that method. If not, it gives an error. For example, a Calculator class can have Add methods with two or three numbers. Calling Add(2, 3) runs the two-parameter version and returns 5. Calling Add(1, 4, 5) runs the three-parameter version and returns 10. Calling Add(2) causes an error because no matching method exists. This feature helps keep code simple and organized when similar actions need different inputs.