Overloading means defining several methods with the same name but different parameters in number or type. The compiler chooses the version based on the arguments of the call. The return type alone is not enough to distinguish two overloads.
Example
static int somme(int a, int b) { return a + b; }
static double somme(double a, double b) { return a + b; }