Не могу понять смысл конструкторов
Не могу понять что такое конструктор и зачем он нужен.
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 ИМЯ_КЛАССА_КОТОРОЕ_ТАКЖЕ_ЯВЛЯЕТСЯ_ИМЕНЕМ_МЕТОДА-КОНСТРУКТОРА_ИЛИ_ДАЖЕ_ТИПОМ_ВОЗВРАЩАЕМОГО_ЗНАЧЕНИЯ()
Т.к. этот метод вы вызываете чтобы создать экземпляр класса, то часто имеет смысл в метод добавить аргументов, чтобы настроить получаемый экземпляр класса. Или выполнить в этом методе какую-то логику, необходимую для корректной работы экземпляра класса.
Сам синтаксис записи конструктора имеет ряд отличий от обычных методов:
- Имя должно совпадать с именем класса. Т.к. классы должны называться с большой буквы, то и этот метод должен называться с большой буквы.
- Метод этот не имеет указания на то, что он возвращает. (Или, наоборот, можно считать что метод не имеет имени и имеет только тип возвращаемого значения, а именно - он возвращает класс, в котором объявлен)
- Хотя вызов этого метода возвращает экземпляр класса, в котором объявлен,
returnписать не нужно.
Конструкторы нужны для создания экземпляра класса. В них можно передавать параметры, которые станут переменными того самого экземпляра.
У вас есть отдельный метод, и в целом-то, получается тоже самое. Но можно упростить и, скорее всего повысить производительность, если создаются много экземпляров.
В классе test:
public test(String name){
this.name = name;
}
Создать
new test("name");
Иногда можно сократить код до трёх строк.