Системный метод println() (вывести в поток вывода, обычно на экран) вызывает метод toString()всякий раз, когда в качестве аргумента получает какой-либо объект, так заложено в его коде.
Так как объект может иметь самую разную реализацию, то для того, чтобы его гарантировано можно было "напечатать" в классе Object определен метод toString(), который по умолчанию выводит имя объекта и еще сопутствующую информацию.
Метод println() не может знать "вид" произвольного объекта и чтобы отобразить его, обращается к методу toString(), который обязательно присутствует в любом объекте и возвращает строку, которую можно напечатать.
Даже если вы не переопределите в своем классе метод toString() будет использован метод класса Object
Вам самому не нужно вызывать этот метод, это делает системный метод печати, чтобы гарантировано получить ожидаемый результат.
Ваши собственные методы не будут вызываться системными методами, потому что они о них ничего не знают, что бы вы там не написали.
Objectи о наследовании/полифморфизме вJava. Возможно что-то отсюда https://ru.stackoverflow.com/questions/416634/%d0%9a%d0%bd%d0%b8%d0%b3%d0%b8-%d0%b8-%d1%83%d1%87%d0%b5%d0%b1%d0%bd%d1%8b%d0%b5-%d1%80%d0%b5%d1%81%d1%83%d1%80%d1%81%d1%8b-%d0%bf%d0%be-java вам поможет. – pavel Jan 30 '18 at 11:08toString(), он всё равно будет работать потому что, есть в родительском классе Object. – Igor Kudryashov Jan 30 '18 at 12:00