Constructor privat în Java: cazuri de utilizare explicate cu un exemplu

Publicat: 2021-04-09

Cuprins

Introducere

Un constructor privat în Java este folosit pentru a restricționa crearea de obiecte. Este un constructor de instanță special utilizat în clasele statice numai pentru membri. Dacă un constructor este declarat ca privat, atunci obiectele sale sunt accesibile numai din cadrul clasei declarate. Nu puteți accesa obiectele sale din afara clasei de constructor.

Cazuri de utilizare pentru constructori privați

Constructorii privați din Java sunt accesați numai din cadrul clasei. Nu puteți accesa un constructor privat din nicio altă clasă. Dacă obiectul nu este încă inițializat, atunci puteți scrie o funcție publică pentru a apela instructorul privat. Dacă obiectul este deja inițializat, atunci puteți returna doar instanța acelui obiect. Un constructor privat în Java are următoarele cazuri de utilizare:

  • Îl puteți folosi cu clase statice numai pentru membri.
  • Îl puteți folosi cu utilitate statică sau clase constante.
  • Îl puteți folosi pentru a servi cursuri singleton.
  • Îl puteți folosi pentru a atribui un nume, de exemplu, crearea utilizând metodele din fabrică.
  • Îl puteți folosi pentru a preveni subclasarea.

Clasa Singleton

Constructorul privat din Java este folosit pentru a crea o clasă singleton. O clasă singleton este o clasă în Java care limitează numărul de obiecte ale clasei declarate la unul. Un constructor privat în Java asigură crearea unui singur obiect odată. Limitează instanțele de clasă din clasa declarată, astfel încât nicio instanță de clasă să nu poată fi creată în afara clasei declarate. Puteți utiliza clasa singleton în concepte de rețea și conectivitate la baze de date.

Exemplul 1: Următorul exemplu demonstrează modul în care un constructor privat în Java limitează numărul de obiecte dintr-o clasă singleton.

import java.io.*;

clasa newTestClass {

obiect static newTestClass = null;

public int a = 20;

private newTestClass() {

}

//am creat un constructor privat

static public newTestClass displayInstance()

/**

*displayInstance() este o metodă publică pe care o vom folosi pentru a crea instanță.

*Apelați această metodă pentru a accesa aceste instanțe din afara clasei.

*/

{

dacă (obiect == nul)

obiect = new newTestClass();

// este creat obiectul clasei singleton

returnare obiect;

}

}

clasă publică SingletonClass {

public static void main(String args[]) {

newTestClass instance1 = newTestClass.displayInstance();

//afișarea instanței clasei singleton prin apelarea metodei publice

newTestClass instance2 = newTestClass.displayInstance();

//afișarea instanței clasei singleton prin apelarea metodei publice

instanță1.a = instanță1.a + 26;

System.out.println(„Instanța 1 creată are următoarea valoare = ” + instance1.a);

System.out.println(„Instanța 2 creată are următoarea valoare = ” + instance2.a);

}

}

Ieșire

Instanța 1 creată are următoarea valoare = 46

Instanța 2 creată are următoarea valoare = 46

În programul de mai sus, valoarea instanței 2 este actualizată automat când actualizăm valoarea obiectului instance1. Această observație demonstrează că atât instanța1 cât și instanța 2 se referă la același obiect.

Exemplul 2: Următorul exemplu demonstrează modul în care un constructor privat în Java asigură că nu este creat mai mult de un obiect la un moment dat.

// Program Java pentru implementarea unei clase singleton

Import java.io.*;

clasă publică newTestClass {

private static newTestClass var=null;

private newTestClass(){

//Constructorul privat poate fi accesat în cadrul clasei

}

public static newTestClass testObject(){

// Această metodă asigură crearea unui singur obiect odată

if(var==null){

var= new newTestClass();

}

return var;

}

afișare public void(){

System.out.println(„Acesta este un exemplu de constructor Private care utilizează o clasă Singleton. “);

}

public static void main(Argumente șir[]){

newTestClass newObject= newTestClass.testObject();

newObject.display();

}

}

Ieșire

Acesta este un exemplu de constructor privat care utilizează o clasă Singleton.

Exemplul 2: Constructor privat în Java pentru a limita numărul de instanțe de clasă.

Acest exemplu demonstrează cum puteți limita numărul de instanțe de clasă declarând un constructor privat.

clasă publică restrictInstanceCreationClass {

public static void main(String[] args) {

RestrictInstance obj;

int a=1;

în timp ce(a<=20)

{

obj = RestrictInstance.getLimInstance();

a++;

}

}

}

clasa RestrictInstance {

public static int varCount = 0;

/**

*creați un constructor privat care mărește numărul

*a variabilei varCount după fiecare creare a instanței

*/

private RestrictInstance() {

varCount++;

System.out.println(„Numărul de instanță ” + varCount + ” este creat.”);

}

public static sincronizat RestrictInstance getLimInstance() {

if(varCount <5) {

returnează o nouă RestrictInstance();

}

System.out.println(„Limita maximă de instanțe atinsă. Nu aveți voie să creați mai multe instanțe.”);

System.gc();

returnează nul;

}

/**

*ștergeți instanța și micșorați numărul

*a variabilei varCount

*/

public void finalize()

{

System.out.println(„Instanța este ștearsă.”);

varCount–;

}}

Ieșire

Instanța numărul 1 este creată.

Instanța numărul 2 este creată.

Instanța numărul 3 este creată.

Instanța numărul 4 este creată.

Instanța numărul 5 este creată.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Instanța este ștearsă.

Instanța este ștearsă.

Instanța este ștearsă.

Instanța este ștearsă.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Instanța numărul 1 este creată.

Instanța numărul 2 este creată.

Instanța numărul 3 este creată.

Instanța numărul 4 este creată.

Instanța numărul 5 este creată.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Limita maximă de instanțe a fost atinsă. Nu aveți voie să mai creați instanțe.

Instanța este ștearsă.

Instanța este ștearsă.

Instanța este ștearsă.

Instanța numărul 1 este creată.

Instanța numărul 2 este creată.

Instanța numărul 3 este creată.

Instanța numărul 4 este creată.

Instanța numărul 5 este creată.

Învață cursuri de software online de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Codul folosit în articol are doar scop explicativ. Puteți modifica declarațiile date în exemple în funcție de cerințele dvs. În acest blog, am discutat despre modul în care un constructor privat în Java limitează numărul de obiecte dintr-o clasă singleton.

Puteți încerca codul pentru a vă consolida cunoștințele constructorului Java . Dacă doriți să obțineți o înțelegere aprofundată a Java, consultați cursul upGrad Executive PG Program în Full Stack Development , care este conceput pentru profesioniștii care lucrează pentru a dobândi experiență în acest domeniu.

Ce sunt constructorii în programare?

Constructorii din programare sunt metodele care sunt apelate automat atunci când un obiect este inițializat. Scopul constructorului este de a inițializa obiectul. Constructorii ar trebui să fie întotdeauna publici și sunt declarați fără niciun tip de returnare. Constructorii sunt folosiți pentru a inițializa obiectul și pentru a efectua alte sarcini care pot fi făcute o singură dată. Constructorii sunt folosiți și pentru a efectua inițializarea unei clase, adică pentru a efectua sarcini care creează clasa.

Care sunt tipurile de constructori în Java?

Există cinci tipuri de constructori în Java. Aceștia sunt: ​​Constructori fără argument: Are o implementare implicită, care este executată atunci când clasa este încărcată în memorie. O clasă care nu are un constructor fără argument TREBUIE să fie declarată finală. Constructori impliciti: Acest constructor este creat atunci când clasa este scrisă în Java și este folosit pentru a inițializa toate variabilele (atributele) clasei la valorile lor implicite (zero sau nul). Constructori parametrizați: Acest constructor este folosit pentru a inițializa unele variabile din anumite valori. Constructori fără valoare returnată: este folosit pentru a inițializa unele variabile din unele valori. Constructori cu valoare returnată: este folosit pentru a inițializa unele variabile din unele valori și, de asemenea, returnează cu o valoare.

Ce este un constructor privat în Java?

Constructorii privați pot fi utilizați pentru a crea o clasă imuabilă. Fără a folosi constructori privați, putem crea clase imuabile declarând clasa finală și creând toate atributele ca fiind finale (de exemplu, private final String name;). Un constructor privat nu poate fi apelat direct de obiectele client ale clasei. Ele pot fi apelate doar intern prin metodele clasei (chiar private). Puteți avea un constructor privat cu unul sau mai mulți parametri. Nu puteți avea ca tipul de returnare al constructorului să fie boolean primitiv. Poate fi String sau Class.