Инициализаторы
Кроме конструктора начальную инициализацию объекта вполне можно было проводить с помощью инициализатора объекта. Инициализатор выполняется до любого конструктора. То есть в инициализатор мы можем поместить код, общий для всех конструкторов:
public class Program {
public static void main(String[] args) {
Person undef = new Person();
undef.displayInfo();
Person tom = new Person("Tom");
tom.displayInfo();
}
}
class Person {
String name; // имя
int age; // возраст
/*начало блока инициализатора*/
{
name = "Undefined";
age = 18;
}
/*конец блока инициализатора*/
Person() {}
Person(String name) {
this.name = name;
}
Person(String name, int age) {
this.name = name;
this.age = age;
}
void displayInfo() {
System.out.printf("Name: %s \tAge: %d\n", name, age);
}
}
Консольный вывод:
Name: Undefined Age: 18
Name: Tom Age: 18