Dans la programmation orientée objet, un constructeur est une fonction spéciale que vous appelez pour créer un objet. Les constructeurs ont plusieurs caractéristiques uniques qui leur permettent de travailler.

En Java, vous nommez un constructeur d'après sa classe. Un constructeur est une méthode, définie dans la classe à laquelle elle s'applique. Les constructeurs Java peuvent utiliser la surcharge pour fournir un comportement alternatif. Les constructeurs en Java peuvent également utiliser l'héritage pour réutiliser le code.

Pourquoi avez-vous besoin de constructeurs de toute façon ?

Les constructeurs sont un pilier de programmation orientée objet, et Java ne fait pas exception. Cet exemple montre comment définir une classe Circle de base avec une propriété de données et une méthode:

classe publique Cercle {
public double rayon ;
public double area() { return 3.14159 * radius * radius; }
}

Vous pouvez ensuite créer une instance de cette classe et interagir avec elle:

Cercle c = nouveau Cercle();
c.rayon = 2;
System.out.println (c.area()); // 12.56636

Mais c'est moins pratique et robuste qu'il ne pourrait l'être. C'est une bonne pratique orientée objet d'encapsuler les données, en les protégeant des accès non autorisés:

classe publique Cercle {
privé rayon double;
public double area() { return 3.14159 * radius * radius; }
public void setRadius (double r) { radius = r; }
}

Maintenant, le code d'appel peut utiliser le setRadius méthode et ne pas avoir à se soucier de ses détails de mise en œuvre:

Cercle c = nouveau Cercle();
c.setRadius (2) ;

Les constructeurs offrent un moyen encore meilleur de fournir des données à un objet lorsque vous le créez. Ils sont très souvent utilisés pour l'initialisation de propriétés, comme le rayon ici.

Exemples de constructeurs simples

Le constructeur le plus basique est un constructeur sans arguments, qui ne fait rien:

classe publique Cercle {
cercle public() {}
}

Voir également: Apprenez à créer des classes en Java

Si vous ne définissez pas de constructeur, Java en fournira un par défaut qui se comporte de la même manière.

Notez quelques éléments:

  1. Le nom du constructeur correspond au nom de la classe.
  2. Ce constructeur utilise le Publique modificateur d'accès, donc n'importe quel autre code peut l'appeler.
  3. Un constructeur n'inclut pas de type de retour. Contrairement aux autres méthodes, les constructeurs ne peuvent pas renvoyer de valeur.

Les constructeurs effectuent généralement une sorte d'initialisation. Notez que le code ci-dessus n'initialise pas la valeur du rayon. Dans ce cas, la langue le mettra automatiquement à zéro. Cette classe s'attend à ce qu'un utilisateur utilise setRadius(). Pour utiliser une valeur par défaut plus utile que 0, vous pouvez l'affecter dans le constructeur:

classe publique Cercle {
public Circle() { rayon = 1; }
}

Les cercles créés avec cette classe auront au moins maintenant une zone réelle! L'appelant peut toujours utiliser setRadius() pour fournir un rayon différent de 1. Mais le constructeur peut être encore plus sympathique:

classe publique Cercle {
public Cercle (double r) { rayon = r; }
}

Vous pouvez désormais créer des cercles avec un rayon spécifique dès la naissance:

Cercle c = nouveau Cercle (2) ;
System.out.println (c.area()); // 12.56636

C'est une utilisation très courante pour les constructeurs. Vous les utiliserez souvent pour initialiser des variables à des valeurs de paramètres.

Surcharge du constructeur

Vous pouvez spécifier plusieurs constructeurs dans une définition de classe:

public Circle() { rayon = 1; }
public Cercle (double r) { rayon = r; }

Cela donne au code appelant le choix de la manière de construire des objets:

Cercle c1 = nouveau Cercle (2) ;
Cercle c2 = nouveau Cercle();
System.out.println (c1.area() + ", " + c2.area()); // 12.56636, 3.14159

Avec un Circle légèrement plus complexe, vous pouvez explorer des constructeurs plus intéressants. Cette version stocke sa position:

classe publique Cercle {
double publique x, y, rayon;
public Circle() { rayon = r; }
public Cercle (double r) { rayon = r; }
public Cercle (double x, double y, double r) {
ceci.x = x; this.y = y; rayon = r;
}

public double area() { return 3.14159 * radius * radius; }
}

Vous pouvez maintenant créer un cercle sans argument, un seul rayon ou des coordonnées x et y à côté du rayon. C'est le même type de surcharge que Java prend en charge pour n'importe quelle méthode.

Enchaînement des constructeurs

Que diriez-vous de créer un cercle à partir d'un autre? Cela nous donnerait la possibilité de copier facilement des cercles. Observez le bloc suivant:

Cercle public (Cercle c) {
ceci.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

Cela fonctionnera, mais cela répétera inutilement du code. Étant donné que la classe Circle a déjà un constructeur qui gère les propriétés individuelles, vous pouvez l'appeler à la place en utilisant le cette mot-clé:

Cercle public (Cercle c) {
ceci (c.x, c.y, c.radius);
}

Il s'agit d'une forme de chaînage de constructeurs, appelant un constructeur à partir d'un autre. Il utilise moins de code et permet de centraliser une opération plutôt que de la dupliquer.

Appel du constructeur parent

L'autre forme de chaînage de constructeurs se produit lorsqu'un constructeur appelle un constructeur de sa classe parente. Cela peut être explicite ou implicite. Pour appeler explicitement un constructeur parent, utilisez le super mot-clé:

super (x, y);

Imaginez une classe Shape jouant le rôle de parent du Circle:

classe publique Forme {
x double, y ;
public Forme (double _x, double _y) { x = _x; y = _y; }
}

Il gère le positionnement commun de toutes les formes, car il s'agit d'une fonctionnalité qu'elles partagent toutes. Désormais, la classe Circle peut déléguer la gestion des positions à son parent:

cercle de classe publique étend la forme {
rayon double;
public Cercle (double r) { super (0, 0); rayon = r; }
public Cercle (double x, double y, double r) {
super (x, y);
rayon = r;
}
}

La construction de superclasse est un aspect très important de héritage en Java. Le langage l'applique par défaut si vous n'appelez pas explicitement super dans vos constructeurs.

Modificateurs d'accès sur les constructeurs

Les constructeurs peuvent inclure un modificateur d'accès dans leur signature. Comme d'autres méthodes, cela définit quels types d'appelants peuvent accéder au constructeur:

Test de classe publique {
Private static Test uniqueInstance = new Test();
Test privé() { }
public statique Test getInstance() {
renvoyer uniqueInstance ;
}
}

Il s'agit d'un exemple plus compliqué, alors prenez soin de le comprendre:

  • La classe n'est pas abstraite, il est donc possible de l'instancier à partir de celle-ci.
  • Le constructeur est privé, donc seule cette classe elle-même peut créer une nouvelle instance.
  • Via une propriété et une méthode statiques, la classe expose une instance unique et unique d'elle-même aux appelants.

Utiliser des constructeurs en Java pour créer des objets

Les constructeurs sont essentiels à la programmation orientée objet. Ils permettent de créer des objets, ce qui est essentiel!

En Java, les constructeurs ressemblent aux autres méthodes et fonctionnent à peu près de la même manière. Vous devez vous rappeler les règles spéciales concernant les constructeurs par défaut, la surcharge et le chaînage des constructeurs. Si les constructeurs sont nouveaux pour vous, vous voudrez peut-être vous renseigner sur les autres concepts Java de base que vous devriez apprendre au début.

E-mail
10 concepts Java de base que vous devriez apprendre pour commencer

Que vous écriviez une interface graphique, développiez un logiciel côté serveur ou une application mobile utilisant Android, l'apprentissage de Java vous sera très utile. Voici quelques concepts Java de base pour vous aider à démarrer.

Lire la suite

Rubriques connexes
  • Programmation
  • Java
  • Conseils de codage
A propos de l'auteur
Bobby Jack (51 articles publiés)

Bobby est un passionné de technologie qui a travaillé comme développeur de logiciels pendant près de deux décennies. Il est passionné par les jeux, travaillant comme rédacteur de critiques au Switch Player Magazine, et est immergé dans tous les aspects de la publication en ligne et du développement Web.

Plus de Bobby Jack

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Un pas de plus…!

Veuillez confirmer votre adresse e-mail dans l'e-mail que nous venons de vous envoyer.

.