Що таке Конструктор в Java?
Конструктор класу дуже зручний і за своїм виглядом схожий із звичайними функціями. За рахунок конструктора ми можемо встановити значення для об'єкта відразу під час його створення.
Конструктор повинен мати однакову назву із класом. Приклад створення конструктора показаний нижче:
class Book {
private int pages;
public String name;
private float weight;
public void getInfoBook () {
System.out.print("У книзі " + name + " знаходиться " + pages + " сторінок. ");
System.out.print("При цьому вона важить " + weight + "кг!");
System.out.println("");
}
Book (int pages, float weight) {
this.pages = pages;
this.weight = weight;
}
Book (int pages, float weight, String name) {
this.pages = pages;
this.weight = weight;
this.name = name;
}
}
В одному класі може бути одразу кілька конструкторів. Створивши кілька конструкторів, ми можемо передавати різну кількість параметрів при створенні об'єкта.
Компілятор сам визначає який конструктор необхідно використовувати в залежності від параметрів, що передаються і їх типів даних.
У коді вище змінні йдуть із модифікатором доступу private. Справа в тому, що всі змінні краще робити або private, або protected. Доступ до змінних повинен здійснюватись лише за рахунок методів та конструкторів. Доступ до полів повинен бути закритий.
Додатково створимо два об'єкти та виведемо інформацію:
public class Main {
public static void main(String[] args) {
Book sherlock_holms = new Book(460, 1.7f); // Використовуємо 1 конструктор
sherlock_holms.name = "Шерлок Холмс"; // Встановлюємо вручну значення для name
sherlock_holms.getInfoBook ();
Book green_mile = new Book(750, 2.8f, "Зелена миля"); // Використовуємо другий конструктор
green_mile.getInfoBook ();
}
}
Оскільки змінна name має public модифікатор доступу, ми можемо посилатися до неї напряму. Краще так не робити і для неї також встановити модифікатор private.
Також конструктор може не приймати параметрів. У такому разі під час створення об'єкта нічого не потрібно додатково передавати.