1 - Нет, это не так.«Конструктор» - это специальный метод класса, который всегда возвращает экземпляр объекта класса.Весь смысл конструктора в том, чтобы вернуть объект.Так что нет, он больше ничего не может вернуть.
1a - Причина, по которой System.out.println
вызывает метод toString
, заключается в том, что вы просите его распечатать этот объект на экране, а toString
метод - это метод, выбранный авторами println
(и языка Java в целом) для представления строкового представления объекта.
2 - этот способ написания на самом деле не называется ничем.Это просто выражение, которое вы передаете как «фактический параметр» методу println
.Правда, это выражение, которое создает новый объект, но оно ничем не отличается от println("a string")
.Вы могли бы назвать это анонимным объектом, если бы вы действительно этого хотели.
2a - ( старый ответ, который фактически не отвечает на ваш вопрос, но я оставлю его здесь ) Это просто называется 'используя менее производную ссылку † на класс ».Остерегайтесь, вы можете вызывать методы только для типа ссылки, поэтому, если вы добавили дополнительные методы в класс Cl
, вы не сможете вызывать их из ссылки Object
.Изучите принцип подстановки Лискова .
† «менее производный», «супертип», «суперкласс» или «более общий класс» и т. Д. *