On crée une instance d'une classe en appelant son constructeur via l'opérateur new.
Un constructeur est un type particulier de méthode dont le but est d'initialiser une instance nouvellement créée.
Les constructeurs ressemblent à des méthodes ordinaires, mais sans type de retour et avec un nom identique à celui de la classe.
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
Comme les méthodes ordinaires, les constructeurs peuvent prendre des paramètres. Les paramètres d'un constructeur sont généralement stockés dans des champs (privés) pour être utilisés plus tard, ou bien servent dans un calcul ponctuel. On peut passer des arguments à un constructeur, exactement comme on passe des arguments à une méthode ordinaire.
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)
Déclarer un constructeur est facultatif. Si aucun constructeur n'est déclaré, le compilateur génère un constructeur sans paramètre :
class Elevator {
}
// This will call the (empty) generated constructor
var elevator = new Elevator();
Si une valeur initiale est affectée à des champs, le compilateur produira du code dans lequel cette affectation est en réalité effectuée à l'intérieur du constructeur. Les déclarations de classe suivantes sont donc équivalentes (du point de vue du fonctionnement) :
class UsingFieldInitialization {
private int players = 5;
}
class UsingConstructorInitialization {
private int players;
public UsingConstructorInitialization() {
players = 5;
}
}