Tak, wszystkie grupy metod są przeciążone.
Kompilator przy przeciążaniu bierze pod uwagę nazwę funkcji i typ parametrów, które przyjmuje - kolejność ma znaczenie. Nie jest natomiast brany pod uwagę zwracany typ, bo załóżmy taką sytuację:
public double PrzeliczWalute(double waluta){ /* return ... */ }
public int PrzeliczWalute(double waluta){/* return ... */}
Niby metody różnią się typem zwracanym, ale kompilator nie jest w stanie wiedzieć jaką metodę programista miał na myśli wywołując ją.
Przeciążenia metod muszą być jednoznaczne. tzn. kompilator nie może mieć jakichkolwiek wątpliwości, którą metodę wywołać, w przypadku kiedy programista będzie chciał jej użyć.