This convention is for ease of programming, constructor chaining, and language consistency.
For example, consider a scenario in which you want to use the Scanner class, and now what if the JAVA developers called the constructor xyz!
Then how do you know what you need to write:
ScObj scanner = new xyz (System.in);
which could be really strange, right! Or, rather, you may have to go to a huge manual to check the constructor name of each class to get the created object, which again does not make sense if you could solve the problem by simply naming the constructors the same as class.
Secondly, the constructor itself is created by the compiler, if you do not provide it explicitly, then the best name for the constructor can be automatically selected by the compiler, so that the programmer can understand it! Obviously, the best choice is to leave it the same as the class.
Thirdly, you may have heard about the chain of constructors, and then when you call the chain between the constructors, how the compiler finds out what name you gave the constructor of the chain class! Obviously, the solution to the problem is the same again. KEEP THE DESIGNER NAME IS SAME AS A CLASS.
When you create an object, you call the constructor, calling it in your code using the new keyword (and passing arguments if necessary), then all the superclass constructors are called by creating a chain of calls that ultimately give the object.
Thanks for the question.