Что происходит с println () при передаче объекта - PullRequest
0 голосов
/ 23 июня 2019
Circle c = new Circle(colour, radius);
System.out.println(c);

Рассмотрим класс Circle, что теперь будет делать оператор println, когда у нас есть toString() метод в классе Circle и когда у нас его нет.

1 Ответ

2 голосов
/ 23 июня 2019

toString() - это метод класса Object, и этот класс является суперклассом всех классов (если вы создаете новый класс, который не расширяет другие классы, он будет неявно наследоваться от Object класса. Помните, что Java делает не поддерживает множественное наследование, т.е. класс может иметь только один прямой суперкласс). Если вы переопределите toString() в наследующем классе, тогда ваша реализация будет вызываться System.out.println() неявно. Если вы не переопределите этот метод, также будет вызван toString(), но с реализацией по умолчанию из класса Object. И реализация по умолчанию Object::toString возвращает:

Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа знака «@» и шестнадцатеричного представления без знака хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению: getClass (). getName () + '@' + Integer.toHexString (hashCode ())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...