Не могу понять смысл конструкторов

Не могу понять что такое конструктор и зачем он нужен.

public class test {
    String name;
    int age;

    public void initialize(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        test var = new test();
        var.name = "name";
        System.out.println(var.name);
    }
}
public class test {
    String name;
    int age;

    public void initialize(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        test var = new test();
        /*var.name = "name";
        System.out.println(var.name);*/
        var.initialize("name");
        System.out.println(var.name);
    }
}

Ответы (2 шт):

Автор решения: ЮрийСПб

Конструктор - метод, который обязательно вызывается при создании экземпляра класса. По умолчанию у всех классов есть конструктор по умолчанию - публичный метод, принимающий 0 аргументов. Именно его вызов вы видите, когда создаёте экземпляр класса. Например new ИМЯ_КЛАССА_КОТОРОЕ_ТАКЖЕ_ЯВЛЯЕТСЯ_ИМЕНЕМ_МЕТОДА-КОНСТРУКТОРА_ИЛИ_ДАЖЕ_ТИПОМ_ВОЗВРАЩАЕМОГО_ЗНАЧЕНИЯ()

Т.к. этот метод вы вызываете чтобы создать экземпляр класса, то часто имеет смысл в метод добавить аргументов, чтобы настроить получаемый экземпляр класса. Или выполнить в этом методе какую-то логику, необходимую для корректной работы экземпляра класса.

Сам синтаксис записи конструктора имеет ряд отличий от обычных методов:

  1. Имя должно совпадать с именем класса. Т.к. классы должны называться с большой буквы, то и этот метод должен называться с большой буквы.
  2. Метод этот не имеет указания на то, что он возвращает. (Или, наоборот, можно считать что метод не имеет имени и имеет только тип возвращаемого значения, а именно - он возвращает класс, в котором объявлен)
  3. Хотя вызов этого метода возвращает экземпляр класса, в котором объявлен, return писать не нужно.
→ Ссылка
Автор решения: Olegator36

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

У вас есть отдельный метод, и в целом-то, получается тоже самое. Но можно упростить и, скорее всего повысить производительность, если создаются много экземпляров.

В классе test:

public test(String name){
    this.name = name;
}

Создать

new test("name");

Иногда можно сократить код до трёх строк.

→ Ссылка