Обычно в перегрузке метода я пишу public void . Но здесь в конструкторе достаточно просто public. Void- что не обязателен теперь , или его вообще нельзя писать?
ZevoFF
13 уровень
Обычно в перегрузке метода я пишу public void . Но здесь в конструкторе достаточно просто public. Void- что не обязателен теперь , или его вообще нельзя писать?
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2020490
22 февраля 2020, 15:09
Конструктор создает обьект класса и возвращает ссылку на него.
public Friend(){};
Friend fr1 = new Friend();
метод или ничего не возвращает ->void, или возвращаемый тип данных указывается в обьявлении метода.
public static Friend getFriend() {
return new Friend();
}
Friend fr3 = getFriend();
0
Justinian Judge в Mega City One Master
22 февраля 2020, 15:25
конструктор не создает объект и не возвращает ничего, он void на уровне байткода.
Конструктор участвует в создании объекта, причем в самую последнюю очередь, когда объект уже почти весь в таком виде, какой будет.
Ключевое слово new отвечает за выделение памяти объекта и запуска процедуры создания объекта в целом, конечным итогом многих десятков процедур и является ссылка, которая будет возвращена переменной.
Конструктор лишь одно звено этого процесса, ответственность которого это придание классу определенного состояния, например путем инициализации полей класса.
То есть фактически, это тот же метод initialize() который демонстрировался в первом квесте, просто усиленный немного синтаксически со своими особенностями.
+3
hidden #2020490
22 февраля 2020, 20:28
Ок. Спасибо.
0
Justinian Judge в Mega City One Master
22 февраля 2020, 14:58
конструктор это специальный вид метода в джаве который имеет отдельный специальный синтаксис и правила к нему.
Внутри джава он void.
Но на уровне синтаксиса если метод имеет возвращаемый тип, то это не конструктор.
- Конструктор не имеет явно указанного типа возвращаемого значения.
- Конструктор имеет имя полностью совпадающее с именем класса, с учетом регистра.
- При создании объекта соответствующий конструктор обязательно сам вызовется (пустой или с параметрами).
- Если мы явно не указываем конструктор, то компилятор сам добавит конструктор по умолчани, в котором нет параметров.
- Если мы явно указали конструктор, например с параметрами, то компилятор ничего не добавит, конструктор по умолчанию таким образом затрется, и мы сможем вызывать только те конструкторы, которые есть в классе.
Пока что так.
+2
ZevoFF
24 февраля 2020, 10:42
Внутри джава он void. - и как я понял , втулить туда return не выйдет никак))
( попробовать в программе ради интереса - но компилятор ругнулся на то что для типа войд нельзя ничего возвращать)...
0
Justinian Judge в Mega City One Master
24 февраля 2020, 11:20
если спустишься на уровень разработки своей виртуальной машины джавы, может и всунешь :)
Но на уровне синтаксиса - снаружи он строго без возвращаемого типа.
В войдовских методах можно писать так, в конструкторах тоже, хотя смысла имеет мало
0
ZevoFF
24 февраля 2020, 12:51
Добавил ещё void .
Но не понятно что возвращается , и что с этим ретурн можно сделать. Ничего толкового не придумал.
Спасибо за уделённое время - вопрос закрываю 0
Justinian Judge в Mega City One Master
24 февраля 2020, 13:15
в этом случае это не конструктор. Это обычный метод, который называется так же как и имя класса, но конструктором он не является, просто метод с названием с большой буквы.
Конструктор это конструкция строго не имеющая в синтаксисе типа возвращаемого значения. Если он указан, это не конструктор.
строка
в войдовских методах используется для выхода из такого метода.
Суть в том, что если у нас есть метод, то кто-то его вызывает, и мы можем с него выйти на уровень выше, то есть доссрочно прекратить работу войдовского метода.
В методах которые возвращают значения, это можно провернуть с помощью return 1; или return "amigo"; если до окончания работы метода мы точно знаем что нашли то что хотели и мы можем это уже вернуть сразу, зачем остальное должно отрабатывать?
В войдовских методах тоже самое, просто поскольку они войдовские, ничего не возвращают то return; это своеобразный аналог break; команда выхода с метода.
Рассмотри пример:
метод, а это метод, не конструктор, так как имеет тип возвращаемого значения, принимает булеан переменную, парень злой и большой?
Если да, то я умываю руки улыбаясь отползая в сторонку. А то прилетит по башне серьезно.
А если нет, то я задираю его и потом лезу в драку.
return используется для выхода с тела метода, иначе, я полез бы с ним в драку, заведомо проигрышную для себя. +4