Коли ви пишете:
public Test()
{
System.out.println("constructor");
}
Це, безумовно, конструктор. І, як ви створюєте перший об'єкт
класу Test, напишіть:
Test t1 = new Test();
Це призведе до виклику вашого конструктора вперше, і код, який
ви написали в операторі print, тобто конструктор, буде надруковано
на консолі. Пам'ятайте, що конструктори автоматично викликаються,
коли ви створюєте об'єкт класу.
Другий раз при створенні об'єкта записом:
Test t2 = new Test();
Це викликало б один і той же конструктор, і друк одного і того ж
"конструктора" на екрані, але це буде другий раз.
Отже, ви отримаєте відповідь конструктор конструктор
In the second case, Коли ви пишете:
public void test()
{
System.out.println("constructor");
}
компілятор розглядатиме його як метод, а не як конструктор.
Навіть якщо void нічого не повертає, це "тип повернення", і
конструктори ніколи не можуть мати тип повернення, ніколи. Це не
означає, що вони вам нічого не повертають, але вони просто не мають
типу повернення.
Таким чином, метод не викликається автоматично, коли об'єкт
класу створюється. Отже, не варто очікувати того самого
результату.
Тепер ви отримуєте порожній вивід, тому що компілятор надає
кожному класу фіктивний/за замовчуванням конструктор, навіть якщо
ви його не визначите. Цей конструктор за замовчуванням буде
викликатися кожного разу, коли ви створюєте об'єкт класу, незалежно
від того, чи ви його називаєте явно чи ні!
конструктор за замовчуванням може бути написаний десь як:
test() { }
тепер ви можете собі уявити, що відбувається, коли ви створюєте
два об'єкти, програма буде компілюватися і працювати правильно,
повертаючи вам порожній вивід!
Сподіваюся, це допомогло вам.