Method overloading allows us to define many methods with the same name but with a different set of parameters ( thus with the same name but different signature ).
A
Yes, they are. They will allow code as such:
A.MyMethod("a string"); // calls the generic version A.MyMethod(42); // calls the int version