Створити екземпляр класу можна, викликавши його конструктор за допомогою оператора new.
Конструктор - це особливий тип методу, мета якого - ініціалізувати щойно створений екземпляр.
Конструктори мають вигляд звичайних методів, але без типу повернення і з назвою, що збігається з назвою класу.
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
Як і звичайні методи, конструктори можуть мати параметри. Параметри конструктора зазвичай зберігають як (приватні) поля, щоб звертатися до них пізніше, або використовують у якомусь одноразовому обчисленні. Конструкторам можна передавати аргументи так само, як аргументи передають звичайним методам.
class Building {
private int numberOfStories;
private int totalHeight;
public Building(int numberOfStories, double storyHeight) {
this.numberOfStories = numberOfStories;
this.totalHeight = numberOfStories * storyHeight;
}
}
// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)
Вказувати конструктор не обовʼязково. Якщо конструктор не вказано, компілятор генерує конструктор без параметрів:
class Elevator {
}
// This will call the (empty) generated constructor
var elevator = new Elevator();
Якщо полям призначено початкове значення, компілятор згенерує код, у якому це присвоєння насправді відбувається всередині конструктора. Отже, наведені оголошення класів є рівнозначними (з погляду функціональності):
class UsingFieldInitialization {
private int players = 5;
}
class UsingConstructorInitialization {
private int players;
public UsingConstructorInitialization() {
players = 5;
}
}