Подтвердить что ты не робот

Что возвращает конструктор в Java?

Пройдя по посту на эту тему, я немного растерялся. Итак, еще раз я спрашиваю это:

"Конструктор Java возвращает какое-либо значение?"

Мои книги говорят, что они не могут вернуть стоимость, но мой профессор говорит, что может, и они всегда делают это.

Как контроль должен быть передан кому-то с какой-либо ценностью или недействительным?

4b9b3361

Ответ 1

Это немного запутанно: конструкторы действительно не возвращают значение; это оператор new. Однако конструкторы всегда используются с new * поэтому похоже, что они всегда возвращают значение.


* Это небольшое упрощение: вы можете использовать конструктор без new, если вы пройдете через отражение. Тем не менее, те же механизмы будут в игре.

Ответ 2

Конструктор возвращает новый экземпляр класса, к которому он принадлежит, даже если он не имеет явного оператора return.

Ответ 3

Я думаю, что путаница носит чисто нотационный характер. Когда вы объявляете конструктор, вы делаете это так:

public class Foo {
    public Foo() {}
}

Здесь нет явного возвращаемого значения.

Однако, когда вы создаете экземпляр объекта, синтаксис выглядит следующим образом:

Foo foo = new Foo();

Это создает новый объект путем выделения памяти и вызова конструктора. Здесь результат явно является экземпляром Foo.

Один из способов согласования явно противоречивой нотации - это думать о том, что конструктор возвращает объект, который создается, но делает это неявно.

Ответ 4

Конструкторы - СПЕЦИАЛЬНЫЕ МЕТОДЫ. Ну, основная разница в конструкторах и методах заключается в том, что

Конструктор

  • Иметь то же имя, что и для класса
  • не имеет типа возврата
  • Может быть перегружен, но не переопределен.

тогда

Методы

  • Может иметь или не иметь то же имя, что и для класса.
  • имеют тип возврата
  • Может быть перегружен и перезаписан.

Синтаксис для методов:
AccessModifier ReturnType Class (...)
EG: public static void main (String [] args)

Синтаксис для конструкторов:
AccessModifier Нет класса ReturnType (...)
EG: public static main (String [] args)

Обратите внимание:

Java - это строго типизированный язык, поэтому каждая функция имеет свой возвращаемый тип, а конструктор всегда возвращает экземпляр класса.

Ответ 5

Итак, я обеспокоен тем, что конструктор возвращает идентификатор ссылки на ссылочную переменную этого класса. возьмите пример:

class demo
{
    demo{}
}
class demo1
{
    public static void main(String as[])
    {
        demo d = new demo();
        System.out.println(d);
    }
}

вывод: demo @7d4991ad это ссылочный идентификатор объекта 'd' класса demo, который возвращается конструктором. если вы не определите ваш конструктор, тогда jvm получит этот идентификатор из конструктора по умолчанию.

Вы можете перепроверить это по этой строке: System.out.println(new demo()); вывод: demo @1b6d3586. Так как каждый объект имеет свою отдельную область кучи в памяти, ссылочные идентификаторы каждого объекта также различаются.

Ответ 6

Я согласен с двумя приведенными выше объяснениями и хочу добавить некоторые утверждения, чтобы сделать более ясным:

Вопрос: что такое конструктор: Ответы: его метод имеет имя, подобное классу.

Вопрос: Возвращает ли конструктор что-нибудь? Ответ: Нет, даже VOID.

Вопрос: Как вызвать конструктор? ИЛИ как вызван конструктор? Ответы: создание объекта с использованием ключевого слова NEW.

Вопрос: как создать объект? Ответ. Один из способов создания объекта - использовать оператор NEW, который возвращает экземпляр объекта.

Ответ 7

По определению нет возможности вернуть значение из конструктора. Конструктор не поддерживает какой-либо тип возврата

Ответ 8

Конструктор возвращает ссылочный идентификатор. я сделал небольшую программу, чтобы доказать это

class Alpha {
    void myMethod() {
        System.out.println(this);// prints same reference ID
    }

    public static void main(String[] args) {
        Alpha alpha = new Alpha();
        System.out.println(alpha);// prints the reference ID
        alpha.myMethod();
    }
}

Выход

[email protected]
[email protected]

вы можете четко видеть, что оба идентификатора ссылки одинаковы

Ответ 9

Представьте себя в ситуации, когда вам говорят набросать орла.

Первый сценарий: вам не говорят, как это должно выглядеть. Все, что вы знаете, это сделать простой набросок орла

Второй сценарий: вам говорят точно, какие цвета использовать, и поза, в которой должен быть набросок Eagle

Теперь первый сценарий отображает именно то, что делает конструктор по умолчанию, и второй сценарий, когда у вас есть информация о том, КАК должен быть создан объект. Но пока и пока вы не возьмете карандаш и бумагу и не начнете рисовать, вам ничего не вернут.

Поэтому, когда вы вызываете конструктор с помощью нового ключевого слова, вы получаете объект. Хотя он явно не возвращает что-то, но вместо этого создает или создает что-то, что вы можете использовать как экземпляр класса.

Ответ 10

да, это текущий экземпляр класса. (Мы не можем использовать возвращаемый тип, но он возвращает значение).

Ответ 11

Конструктор возвращает детальную структуру класса на очень низком уровне (например, сколько памяти используется данными и методами) + выполняет код, написанный внутри конструктора. В то время как новый оператор принимает, возвращает конструктор в качестве своего операнда и выделяет память во время выполнения и возвращает свой обработчик переменной класса.

Ответ 12

неявно конструктор возвращает тип класса........