The println() system method (output to the output stream, usually to the screen) calls the toString() method whenever it takes an object as an argument, as it is in its code.
Since an object can have very different implementations, to ensure that it can be guaranteed to be “printed”, the Object class defines the toString() method, which by default displays the name of the object and other related information.
The println() method cannot know the "look" of an arbitrary object and, in order to display it, refers to the toString() method, which is necessarily present in any object and returns a string that can be printed.
Even if you do not redefine the toString() method in your class, the Object class method will be used.
You yourself do not need to call this method, it makes the system printing method to guarantee the expected result.
Your own methods will not be called by system methods, because they do not know anything about them, whatever you write there.