next up previous contents index
suivant: Méthodes monter: Classes et instances, membres précédent: Expression d'accès   Table des matières   Index


Constructeurs

Outre ses champs, la définition d'une classe comporte la définition de ses constructeurs, qui portent le même nom que la classe, ont comme les méthodes, une liste de paramètres, mais n'ont pas de type de retour. La définition des constructeurs consiste souvent à spécifier les différents cas d'initialisation utiles. Par exemple, on pourra initialiser les champs d'un point à l'aide d'un couple de coordonnées, ou bien on pourra les initialiser à zéro :

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.


next up previous contents index
suivant: Méthodes monter: Classes et instances, membres précédent: Expression d'accès   Table des matières   Index
Rene' LALEMENT 2002-11-07