package geometrie; class Point { // ... // les deux constructeurs : Point() {} Point(double x, double y) { this.x = x; this.y = y; } // ... }
Ce sont les constructeurs qui figurent dans les expressions de création. Quand un constructeur est invoqué par l'évaluation d'une expression de création, une instance est créée, ce qui signifie qu'une zone de la mémoire lui est attribuée, et les champs de cette instance peuvent alors être initialisés.
Employé dans un constructeur, le nom this réfère à l'instance créée par ce constructeur. Ceci permet en particulier d'employer le nom du champ x comme paramètre du constructeur, dans this.x = x.
Il n'est pas obligatoire de définir des constructeurs. Si l'on n'en définit pas explicitement, le constructeur sans paramètre et de corps vide est toujours défini implicitement : c'est le constructeur par défaut. Par contre, dès que l'on définit un (autre) constructeur, ce constructeur par défaut n'est plus défini implicitement et ne peut donc plus être utilisé. Par exemple, si la classe Point est définie avec le seul constructeur
Point(double x, double y) { this.x = x; this.y = y; }
et que le programme contient l'expression new Point(), le compilateur émet un message d'erreur, disant que le constructeur Point() n'est pas défini.