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

Каков возвращаемый тип конструктора в java?

Как мы знаем, нам не нужно добавлять какой-либо тип возвращаемого значения в конструктор Java.

class Sample{
  .....
  Sample(){
    ........
  }
}

В Objective C, если мы создаем конструктор, он возвращает указатель на его класс. Но я не думаю, что это не обязательно.

AClass *anObject = [[AClass alloc] init];//init is the constructor with return type a pointer to AClass

Аналогично, преобразуется конструктор в метод, который возвращает ссылку на свой собственный класс?

Вот так:

class Sample{
    .....
    Sample Sample(){
      ........

      return this;
    }
}

Составляет ли компилятор возвращаемый тип ссылку на тот же класс на конструктор? Что происходит с конструктором? Любая ссылка, чтобы изучить это?

EDIT:

На самом деле, я хочу, чтобы ответы были на уровне байтового кода или уровне JVM или даже ниже.

4b9b3361

Ответ 1

Многие ответили, как конструкторы определены в Java.

На уровне JVM статические инициализаторы и конструкторы - это методы, которые возвращают void. Статические инициализаторы являются статическими методами, однако конструкторы используют this и ничего не нужно возвращать. Это связано с тем, что вызывающий объект отвечает за создание объекта (а не конструктора)

Если вы пытаетесь создать объект в байтовом коде без вызова конструктора, вы получите VerifyError. Однако в JVM oracle вы можете использовать Unsafe.allocateInstance() для создания объекта без вызова конструктора,

Статический инициализатор называется <cinit>, который не принимает аргументов и конструктор называется <init>. Оба имеют тип возврата void.

По большей части это скрыто от разработчика Java (если только они не генерируют байт-код), однако единственный раз, когда вы видите эти "методы" в трассировке стека (хотя вы не можете увидеть тип возврата)

Ответ 2

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

Конструкторы вызываются выражениями создания экземпляра класса (в основном, использование new), явным вызовом из других конструкторов (с использованием синтаксиса this(...) или super(...)) и оператором конкатенации строк. Нет другого способа вызвать конструктор (в частности, они не могут быть вызваны, как и другие методы).

Подробнее см. раздел 8.8 Спецификации языка Java.

Ответ 3

Является ли конструктор преобразован в метод, который возвращает ссылку на свой собственный класс?

Нет, но да, если это указано для этого.

Компилятор добавляет возвращаемый тип ссылку на тот же класс на конструктор??

Нет, это не

Что происходит с конструктором?

Это метод, который запускается при создании объекта. Как правило, с использованием "нового" ключевого слова. Он может выполнить некоторую предварительную задачу или вернуть что-то или присвоить некоторые значения во время построения.

Любая ссылка для изучения этого.

Ответ 4

Конструкторы похожи на методы, за исключением того, что они используют имя класса и не имеют типа возврата. Вся цель использования конструкторов - создать объект (экземпляр класса) и выделить его (через ключевое слово new) в памяти (кучу), а также инициализировать любые поля, если они доступны.

Ответ 5

Конструкторы вызываются через специальное ключевое слово java new, которое создает (и инициализирует) объект указанного конкретного типа.

Я полагаю, вы могли бы сказать комбинацию new, и выбранный конструктор "возвращает" объект, который в java, конечно, является указателем под обложками

Ответ 6

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

class A {
    int x;
    A(int a) {
        x = a;
    }
}
class B {
    public static void main(String asd[]) {
        A a = new A(4);
        System.out.println(a);
    }
}

Здесь после вызова конструктора A(...) этот конструктор вернет ссылку на тип класса A на вызывающий (т.е. A a = new A(4)).

Ответ 7

Конструктор используется только для инициализации члена класса и

  • Имя конструктора и имя класса одинаковы
  • Конструктор не может иметь тип возврата
  • Конструктор всегда вызывается при создании объекта
  • Конструктор всегда открытый