Method overloading happens when two methods of the SAME class have the same name, but different signatures. One example is the substring method of the String class. The string class has two methods named substring, one with two int parameters and one with one int parameter.