1.You refer to a method by using the name of the method,A method is name name for an action.The same word expresses a number of different meanings---it's overloaded.
2.the method overloading is essential to allow the same name to be used with different argument types.
3.Each overloaded method must take a unique list of argument types,that distinguish the overloaded methods.
4.Why only class names and method argument lists? Why notdistinguish between methods based on their return values?
you can also call a method and ignore thereturn value. This is often referred to as calling a method for its side effect, since you don’tcare about the return value,but instead want the other effects of the method call. So if youcall the method this way:
f();
how can Java determine which f( ) should be called? And how could someone reading thecode see it? Because of this sort of problem, you cannot use return value types to distinguish overloaded methods.
But if you write a constructor,the compiler says:"You've written a constructor so you know what you're doing,if you didn't put in a default it's because you meant to leave it out!"
SO,IF YOU DEFINE ANY CONSTRUCTORS(WITH OR WITHOUT ARGUMENTS),THE COMPILER WILL NOT SYNTHESIZE ONE FOR YOU.