Constructeur privé en Java : cas d'utilisation expliqués avec un exemple
Publié: 2021-04-09Table des matières
introduction
Un constructeur privé en Java est utilisé pour restreindre la création d'objets. Il s'agit d'un constructeur d'instance spécial utilisé dans les classes statiques réservées aux membres. Si un constructeur est déclaré comme privé, ses objets ne sont accessibles qu'à partir de la classe déclarée. Vous ne pouvez pas accéder à ses objets depuis l'extérieur de la classe constructeur.
Cas d'utilisation des constructeurs privés
Les constructeurs privés en Java ne sont accessibles qu'à partir de la classe. Vous ne pouvez pas accéder à un constructeur privé à partir d'une autre classe. Si l'objet n'est pas encore initialisé, alors vous pouvez écrire une fonction publique pour appeler l'instructeur privé. Si l'objet est déjà initialisé, vous ne pouvez renvoyer que l'instance de cet objet. Un constructeur privé en Java a les cas d'utilisation suivants :
- Vous pouvez l'utiliser avec des classes statiques réservées aux membres.
- Vous pouvez l'utiliser avec un utilitaire statique ou des classes constantes.
- Vous pouvez l'utiliser pour servir des classes singleton.
- Vous pouvez l'utiliser pour attribuer un nom, par exemple, création en utilisant des méthodes d'usine.
- Vous pouvez l'utiliser pour empêcher le sous-classement.
Classe Singleton
Le constructeur privé en Java est utilisé pour créer une classe singleton. Une classe singleton est une classe en Java qui limite à un le nombre d'objets de la classe déclarée. Un constructeur privé en Java garantit qu'un seul objet est créé à la fois. Il restreint les instances de classe au sein de la classe déclarée afin qu'aucune instance de classe ne puisse être créée en dehors de la classe déclarée. Vous pouvez utiliser la classe singleton dans les concepts de mise en réseau et de connectivité de base de données.
Exemple 1 : L'exemple suivant montre comment un constructeur privé en Java limite le nombre d'objets dans une classe singleton.
importer java.io.* ; class newTestClass { objet newTestClass statique = null ; public entier a = 20 ; newTestClass privée() { } //nous avons créé un constructeur privé public statique newTestClass displayInstance() /** *displayInstance() est une méthode publique que nous utiliserons pour créer une instance. *Appelez cette méthode pour accéder à ces instances depuis l'extérieur de la classe. */ { si (objet == null) objet = nouveau newTestClass(); //l'objet de classe singleton est créé objet de retour ; } } classe publique SingletonClass { public static void main(String args[]) { newTestClass instance1 = newTestClass.displayInstance(); //affichage de l'instance de la classe singleton en appelant la méthode publique newTestClass instance2 = newTestClass.displayInstance(); //affichage de l'instance de la classe singleton en appelant la méthode publique instance1.a = instance1.a + 26 ; System.out.println("L'instance 1 créée a la valeur suivante = " + instance1.a); System.out.println("L'instance 2 créée a la valeur suivante = " + instance2.a); } } |
Sortir
L'instance 1 créée a la valeur suivante = 46 L'instance 2 créée a la valeur suivante = 46 |
Dans le programme ci-dessus, la valeur de l'instance 2 est automatiquement mise à jour lorsque nous mettons à jour la valeur de l'objet instance1. Cette observation démontre que l'instance 1 et l'instance 2 font référence au même objet.
Exemple 2 : L'exemple suivant montre comment un constructeur privé en Java garantit qu'un seul objet est créé à la fois.
// Programme Java pour une implémentation de classe singleton Importer java.io.* ; classe publique newTestClass { newTestClass statique privée var=null ; newTestClass privée(){ // Le constructeur privé est accessible dans la classe } public statique newTestClass testObject(){ // Cette méthode garantit qu'un seul objet est créé à la fois si(var==null){ var= new nouvelleClasseTest(); } retour var ; } public void display(){ System.out.println("Ceci est un exemple de constructeur privé utilisant une classe Singleton. "); } public static void main(String args[]){ newTestClass newObject= newTestClass.testObject(); nouvelObjet.display(); } } |
Sortir
Ceci est un exemple de constructeur privé utilisant une classe Singleton.
Exemple 2 : constructeur privé en Java pour limiter le nombre d'instances de classe.
Cet exemple montre comment vous pouvez limiter le nombre d'instances de classe en déclarant un constructeur privé.
classe publique restrictInstanceCreationClass { public static void main(String[] args) { RestrictInstance obj ; int a=1 ; tandis que(a<=20) { obj = RestrictInstance.getLimInstance(); a++ ; } } } class RestrictInstance { public statique int varCount = 0 ; /** * créer un constructeur privé qui augmente le nombre *de la variable varCount après chaque création d'instance */ privé RestrictInstance() { varCount++ ; System.out.println("Le numéro d'instance ” + varCount + ” est créé.”); }
public statique synchronisé RestrictInstance getLimInstance() { si(varCount <5) { renvoie new RestrictInstance(); } System.out.println("Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances."); System.gc(); renvoie nul ; } /** * supprimer l'instance et diminuer le nombre *de la variable varCount */ public void finalise() { System.out.println("L'instance est supprimée."); varCount– ; }} |
Sortir
L'instance numéro 1 est créée. L'instance numéro 2 est créée. L'instance numéro 3 est créée. L'instance numéro 4 est créée. L'instance numéro 5 est créée. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. L'instance est supprimée. L'instance est supprimée. L'instance est supprimée. L'instance est supprimée. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. L'instance numéro 1 est créée. L'instance numéro 2 est créée. L'instance numéro 3 est créée. L'instance numéro 4 est créée. L'instance numéro 5 est créée. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. Limite maximale d'instances atteinte. Vous n'êtes plus autorisé à créer d'instances. L'instance est supprimée. L'instance est supprimée. L'instance est supprimée. L'instance numéro 1 est créée. L'instance numéro 2 est créée. L'instance numéro 3 est créée. L'instance numéro 4 est créée. L'instance numéro 5 est créée. |
Apprenez des cours de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Conclusion
Le code utilisé dans l'article est uniquement à des fins explicatives. Vous pouvez modifier les instructions données dans les exemples selon vos besoins. Dans ce blog, nous avons expliqué comment un constructeur privé en Java limite le nombre d'objets dans une classe singleton.
Vous pouvez essayer le code pour renforcer les connaissances de votre constructeur Java . Si vous souhaitez acquérir une compréhension approfondie de Java, consultez le cours upGrad Executive PG Program in Full Stack Development qui est conçu pour les professionnels en activité afin d'acquérir une expertise dans ce domaine.
Que sont les constructeurs en programmation ?
Les constructeurs en programmation sont les méthodes appelées automatiquement lorsqu'un objet est initialisé. Le but du constructeur est d'initialiser l'objet. Les constructeurs doivent toujours être publics et ils sont déclarés sans aucun type de retour. Les constructeurs sont utilisés pour initialiser l'objet et pour effectuer d'autres tâches qui ne peuvent être effectuées qu'une seule fois. Les constructeurs sont également utilisés pour effectuer l'initialisation d'une classe, c'est-à-dire pour effectuer des tâches qui créent la classe.
Quels sont les types de constructeurs en Java ?
Il existe cinq types de constructeurs en Java. Ce sont : Les constructeurs sans argument : Il a une implémentation par défaut, qui est exécutée lorsque la classe est chargée dans la mémoire. Une classe qui n'a pas de constructeur sans argument DOIT être déclarée finale. Constructeurs par défaut : Ce constructeur est créé lorsque la classe est écrite en Java et sert à initialiser toutes les variables (attributs) de la classe à leurs valeurs par défaut (zéro ou null). Constructeurs paramétrés : Ce constructeur est utilisé pour initialiser certaines variables à partir de certaines valeurs. Constructeurs sans valeur de retour : Il est utilisé pour initialiser certaines variables à partir de certaines valeurs. Constructeurs avec valeur de retour : il est utilisé pour initialiser certaines variables à partir de certaines valeurs et renvoie également avec une valeur.
Qu'est-ce qu'un constructeur privé en Java ?
Les constructeurs privés peuvent être utilisés pour créer une classe immuable. Sans utiliser de constructeurs privés, nous pouvons créer des classes immuables en déclarant la classe final et en créant tous les attributs comme final (par exemple, private final String name;). Un constructeur privé ne peut pas être appelé directement par les objets clients de la classe. Elles ne peuvent être appelées qu'en interne par les méthodes de la classe (même privées). Vous pouvez avoir un constructeur privé avec un ou plusieurs paramètres. Vous ne pouvez pas faire en sorte que le type de retour du constructeur soit un booléen primitif. Il peut s'agir d'une chaîne ou d'une classe.