Costruttore privato in Java: casi d'uso spiegati con l'esempio

Pubblicato: 2021-04-09

Sommario

introduzione

Un costruttore privato in Java viene utilizzato per limitare la creazione di oggetti. È un costruttore di istanze speciale utilizzato nelle classi statiche di soli membri. Se un costruttore è dichiarato privato, i suoi oggetti sono accessibili solo dall'interno della classe dichiarata. Non puoi accedere ai suoi oggetti dall'esterno della classe del costruttore.

Casi d'uso di costruttori privati

I costruttori privati ​​in Java sono accessibili solo dall'interno della classe. Non puoi accedere a un costruttore privato da nessun'altra classe. Se l'oggetto non è ancora inizializzato, puoi scrivere una funzione pubblica per chiamare l'istruttore privato. Se l'oggetto è già inizializzato, puoi restituire solo l'istanza di quell'oggetto. Un costruttore privato in Java ha i seguenti casi d'uso:

  • Puoi usarlo con classi statiche per soli membri.
  • Puoi usarlo con utilità statica o classi costanti.
  • Puoi usarlo per servire classi singleton.
  • Puoi usarlo per assegnare un nome, ad esempio, creazione utilizzando i metodi di fabbrica.
  • Puoi usarlo per impedire la sottoclasse.

Classe singleton

Il costruttore privato in Java viene utilizzato per creare una classe singleton. Una classe singleton è una classe in Java che limita il numero di oggetti della classe dichiarata a uno. Un costruttore privato in Java garantisce che venga creato un solo oggetto alla volta. Limita le istanze della classe all'interno della classe dichiarata in modo che nessuna istanza della classe possa essere creata al di fuori della classe dichiarata. È possibile utilizzare la classe singleton nei concetti di connettività di rete e database.

Esempio 1: l'esempio seguente mostra come un costruttore privato in Java limita il numero di oggetti in una classe singleton.

importa java.io.*;

classe newTestClass {

oggetto statico newTestClass = null;

pubblico int a = 20;

privato newTestClass() {

}

//abbiamo creato un costruttore privato

statico pubblico newTestClass displayInstance()

/**

*displayInstance() è un metodo pubblico che useremo per creare un'istanza.

*Chiama questo metodo per accedere a queste istanze dall'esterno della classe.

*/

{

se (oggetto == nullo)

oggetto = new newTestClass();

//viene creato l'oggetto classe singleton

restituire l'oggetto;

}

}

classe pubblica SingletonClass {

public static void main(String args[]) {

newTestClass instance1 = newTestClass.displayInstance();

//visualizza l'istanza della classe singleton chiamando il metodo public

newTestClass instance2 = newTestClass.displayInstance();

//visualizza l'istanza della classe singleton chiamando il metodo public

istanza1.a = istanza1.a + 26;

System.out.println(“L'istanza 1 creata ha il seguente valore = ” + istanza1.a);

System.out.println(“L'istanza 2 creata ha il seguente valore = ” + istanza2.a);

}

}

Produzione

L'istanza 1 creata ha il seguente valore = 46

L'istanza 2 creata ha il seguente valore = 46

Nel programma precedente, il valore dell'istanza 2 viene aggiornato automaticamente quando aggiorniamo il valore dell'oggetto dell'istanza1. Questa osservazione dimostra che sia l'istanza 1 che l'istanza 2 si riferiscono allo stesso oggetto.

Esempio 2: l'esempio seguente mostra come un costruttore privato in Java garantisce che non venga creato più di un oggetto alla volta.

// Programma Java per l'implementazione di una classe singleton

Importa java.io.*;

classe pubblica newTestClass {

privato statico newTestClass var=null;

privato newTestClass(){

//È possibile accedere al costruttore privato all'interno della classe

}

public statico newTestClass testObject(){

// Questo metodo garantisce che venga creato un solo oggetto alla volta

if(var==null){

var= new newTestClass();

}

ritorno var;

}

visualizzazione vuota pubblica(){

System.out.println(“Questo è un esempio di un costruttore Private che usa una classe Singleton. “);

}

public static void main(String args[]){

newTestClass newObject= newTestClass.testObject();

newObject.display();

}

}

Produzione

Questo è un esempio di un costruttore Private che utilizza una classe Singleton.

Esempio 2: Costruttore privato in Java per limitare il numero di istanze di classe.

Questo esempio mostra come limitare il numero di istanze di classe dichiarando privato un costruttore.

classe pubblica limitInstanceCreationClass {

public static void main(String[] args) {

RestrictInstance obj;

int a=1;

mentre(a<=20)

{

obj = RestrictInstance.getLimInstance();

a++;

}

}

}

classe RestrictInstance {

public static int varCount = 0;

/**

*crea un costruttore privato che aumenta il conteggio

*della variabile varCount dopo la creazione di ogni istanza

*/

private RestrictInstance() {

varCount++;

System.out.println("Viene creato il numero di istanza " + varCount + ".");

}

public statico sincronizzato RestrictInstance getLimInstance() {

if(varCount <5) {

restituisce new RestrictInstance();

}

System.out.println("Limite massimo di istanze raggiunto. Non sei autorizzato a creare più istanze.");

System.gc();

ritorno nullo;

}

/**

*elimina l'istanza e diminuisci il conteggio

*della variabile varCount

*/

pubblico vuoto finalizzare()

{

System.out.println("L'istanza è stata eliminata.");

varCount–;

}}

Produzione

Viene creata l'istanza numero 1.

Viene creata l'istanza numero 2.

Viene creata l'istanza numero 3.

Viene creata l'istanza numero 4.

Viene creata l'istanza numero 5.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

L'istanza viene eliminata.

L'istanza viene eliminata.

L'istanza viene eliminata.

L'istanza viene eliminata.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Viene creata l'istanza numero 1.

Viene creata l'istanza numero 2.

Viene creata l'istanza numero 3.

Viene creata l'istanza numero 4.

Viene creata l'istanza numero 5.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

Limite massimo di istanza raggiunto. Non sei autorizzato a creare più istanze.

L'istanza viene eliminata.

L'istanza viene eliminata.

L'istanza viene eliminata.

Viene creata l'istanza numero 1.

Viene creata l'istanza numero 2.

Viene creata l'istanza numero 3.

Viene creata l'istanza numero 4.

Viene creata l'istanza numero 5.

Impara i corsi di software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

Il codice utilizzato nell'articolo è solo a scopo esplicativo. È possibile modificare le affermazioni fornite negli esempi secondo le proprie esigenze. In questo blog, abbiamo discusso di come un costruttore privato in Java limita il numero di oggetti in una classe singleton.

Puoi provare il codice per rafforzare le conoscenze del tuo costruttore Java . Se vuoi acquisire una conoscenza approfondita di Java, dai un'occhiata al corso upGrad Executive PG Program in Full Stack Development , progettato per i professionisti che lavorano per acquisire esperienza in quest'area.

Cosa sono i costruttori nella programmazione?

I costruttori nella programmazione sono i metodi che vengono chiamati automaticamente quando un oggetto viene inizializzato. Lo scopo del costruttore è inizializzare l'oggetto. I costruttori dovrebbero essere sempre pubblici e sono dichiarati senza alcun tipo restituito. I costruttori vengono utilizzati per inizializzare l'oggetto e per eseguire altre attività che possono essere eseguite solo una volta. I costruttori vengono utilizzati anche per eseguire l'inizializzazione di una classe, ovvero per eseguire attività che creano la classe.

Quali sono i tipi di costruttori in Java?

Ci sono cinque tipi di costruttori in Java. Sono: Costruttori senza argomenti: ha un'implementazione predefinita, che viene eseguita quando la classe viene caricata in memoria. Una classe che non ha un costruttore senza argomenti DEVE essere dichiarata come finale. Costruttori predefiniti: questo costruttore viene creato quando la classe viene scritta in Java e viene utilizzato per inizializzare tutte le variabili della classe (attributi) ai loro valori predefiniti (zero o null). Costruttori parametrizzati: questo costruttore viene utilizzato per inizializzare alcune variabili da alcuni valori. Costruttori senza valore di ritorno: viene utilizzato per inizializzare alcune variabili da alcuni valori. Costruttori con valore di ritorno: serve per inizializzare alcune variabili da alcuni valori e restituisce anche un valore.

Che cos'è un costruttore privato in Java?

I costruttori privati ​​possono essere usati per creare una classe immutabile. Senza usare costruttori privati, possiamo creare classi immutabili dichiarando la classe final e creando tutti gli attributi come finali (es. private final String name;). Un costruttore privato non può essere chiamato direttamente dagli oggetti client della classe. Possono essere chiamati solo internamente con metodi della classe (anche privati). Puoi avere un costruttore privato con uno o più parametri. Non puoi fare in modo che il tipo restituito del costruttore sia booleano primitivo. Può essere String o Class.