Privater Konstruktor in Java: Anwendungsfälle mit Beispiel erklärt

Veröffentlicht: 2021-04-09

Inhaltsverzeichnis

Einführung

Ein privater Konstruktor in Java wird zum Einschränken der Objekterstellung verwendet. Es ist ein spezieller Instanzkonstruktor, der in statischen Nur-Member-Klassen verwendet wird. Wenn ein Konstruktor als privat deklariert ist, sind seine Objekte nur innerhalb der deklarierten Klasse zugänglich. Sie können nicht von außerhalb der Konstruktorklasse auf ihre Objekte zugreifen.

Anwendungsfälle für private Konstruktoren

Auf private Konstruktoren in Java wird nur innerhalb der Klasse zugegriffen. Sie können von keiner anderen Klasse aus auf einen privaten Konstruktor zugreifen. Wenn das Objekt noch nicht initialisiert ist, können Sie eine öffentliche Funktion schreiben, um den Privatlehrer aufzurufen. Wenn das Objekt bereits initialisiert ist, können Sie nur die Instanz dieses Objekts zurückgeben. Ein privater Konstruktor in Java hat die folgenden Anwendungsfälle:

  • Sie können es mit statischen Nur-Member-Klassen verwenden.
  • Sie können es mit statischen Dienstprogrammen oder konstanten Klassen verwenden.
  • Sie können es verwenden, um Singleton-Klassen bereitzustellen.
  • Sie können es verwenden, um einen Namen zu vergeben, z. B. die Erstellung mithilfe von Fabrikmethoden.
  • Sie können es verwenden, um Unterklassenbildung zu verhindern.

Singleton-Klasse

Der private Konstruktor in Java wird verwendet, um eine Singleton-Klasse zu erstellen. Eine Singleton-Klasse ist eine Klasse in Java, die die Anzahl der Objekte der deklarierten Klasse auf eins begrenzt. Ein privater Konstruktor in Java sorgt dafür, dass immer nur ein Objekt auf einmal erstellt wird. Es schränkt die Klasseninstanzen innerhalb der deklarierten Klasse ein, sodass keine Klasseninstanz außerhalb der deklarierten Klasse erstellt werden kann. Sie können die Singleton-Klasse in Netzwerk- und Datenbankkonnektivitätskonzepten verwenden.

Beispiel 1: Das folgende Beispiel zeigt, wie ein privater Konstruktor in Java die Anzahl der Objekte in einer Singleton-Klasse begrenzt.

java.io.* importieren;

Klasse neueTestklasse {

statisches newTestClass-Objekt = null;

öffentlich int a = 20;

private newTestClass() {

}

//Wir haben einen privaten Konstruktor erstellt

statisch öffentlich newTestClass displayInstance()

/**

*displayInstance() ist eine öffentliche Methode, die wir verwenden werden, um eine Instanz zu erstellen.

*Rufen Sie diese Methode auf, um von außerhalb der Klasse auf diese Instanzen zuzugreifen.

*/

{

if (Objekt == null)

Objekt = neue neueTestklasse();

//Singleton-Klassenobjekt wird erstellt

Rückgabeobjekt;

}

}

öffentliche Klasse SingletonClass {

public static void main(String args[]) {

newTestClass instance1 = newTestClass.displayInstance();

//Anzeigen der Instanz der Singleton-Klasse durch Aufrufen der öffentlichen Methode

newTestClass instance2 = newTestClass.displayInstance();

//Anzeigen der Instanz der Singleton-Klasse durch Aufrufen der öffentlichen Methode

Instanz1.a = Instanz1.a + 26;

System.out.println(„Die erstellte Instanz 1 hat den folgenden Wert = ” + instance1.a);

System.out.println(„Die erstellte Instanz 2 hat den folgenden Wert = ” + instance2.a);

}

}

Ausgabe

Die erstellte Instanz 1 hat den folgenden Wert = 46

Die erstellte Instanz 2 hat den folgenden Wert = 46

Im obigen Programm wird der Wert von Instanz 2 automatisch aktualisiert, wenn wir den Wert des Objekts instance1 aktualisieren. Diese Beobachtung zeigt, dass sowohl Instanz1 als auch Instanz 2 auf dasselbe Objekt verweisen.

Beispiel 2: Das folgende Beispiel zeigt, wie ein privater Konstruktor in Java sicherstellt, dass nicht mehr als ein Objekt gleichzeitig erstellt wird.

// Java-Programm für eine Singleton-Klassenimplementierung

java.io.* importieren;

öffentliche Klasse newTestClass {

private statische newTestClass var=null;

private newTestClass(){

// Auf den privaten Konstruktor kann innerhalb der Klasse zugegriffen werden

}

öffentlich statisch newTestClass testObject(){

// Diese Methode stellt sicher, dass jeweils nur ein Objekt erstellt wird

if(var==null){

var= new newTestClass();

}

var zurückgeben;

}

öffentliche Leeranzeige () {

System.out.println(“Dies ist ein Beispiel für einen privaten Konstruktor, der eine Singleton-Klasse verwendet. “);

}

public static void main(String args[]){

newTestClass newObject= newTestClass.testObject();

neuesObjekt.display();

}

}

Ausgabe

Dies ist ein Beispiel für einen privaten Konstruktor, der eine Singleton-Klasse verwendet.

Beispiel 2: Privater Konstruktor in Java , um die Anzahl der Klasseninstanzen zu begrenzen.

Dieses Beispiel zeigt, wie Sie die Anzahl der Klasseninstanzen begrenzen können, indem Sie einen Konstruktor als privat deklarieren.

öffentliche Klasse BeschränkungsInstanzErstellungsklasse {

public static void main(String[] args) {

RestrictInstance obj;

int a=1;

während(a<=20)

{

obj = RestrictInstance.getLimInstance();

a++;

}

}

}

Klasse RestrictInstance {

öffentlich statisch int varCount = 0;

/**

* Erstellen Sie einen privaten Konstruktor, der die Anzahl erhöht

*of varCount-Variable nach jeder Instanzerstellung

*/

private RestrictInstance() {

varCount++;

System.out.println(“Instanznummer ” + varCount + ” wird erstellt.”);

}

öffentlich statisch synchronisiert RestrictInstance getLimInstance() {

if(varCount <5) {

geben Sie neue RestrictInstance () zurück;

}

System.out.println(“Maximales Instanzlimit erreicht. Sie dürfen keine weiteren Instanzen erstellen.”);

System.gc();

gib null zurück;

}

/**

*Löschen Sie die Instanz und verringern Sie die Anzahl

*der varCount-Variablen

*/

public void finalise()

{

System.out.println(“Instanz wird gelöscht.”);

varCount–;

}}

Ausgabe

Instanznummer 1 wird erstellt.

Instanznummer 2 wird erstellt.

Instanznummer 3 wird erstellt.

Instanznummer 4 wird erstellt.

Instanznummer 5 wird erstellt.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Instanz wird gelöscht.

Instanz wird gelöscht.

Instanz wird gelöscht.

Instanz wird gelöscht.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Instanznummer 1 wird erstellt.

Instanznummer 2 wird erstellt.

Instanznummer 3 wird erstellt.

Instanznummer 4 wird erstellt.

Instanznummer 5 wird erstellt.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Maximale Instanzgrenze erreicht. Sie dürfen keine Instanzen mehr erstellen.

Instanz wird gelöscht.

Instanz wird gelöscht.

Instanz wird gelöscht.

Instanznummer 1 wird erstellt.

Instanznummer 2 wird erstellt.

Instanznummer 3 wird erstellt.

Instanznummer 4 wird erstellt.

Instanznummer 5 wird erstellt.

Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Fazit

Der im Artikel verwendete Code dient nur der Erläuterung. Sie können die in den Beispielen angegebenen Anweisungen nach Ihren Anforderungen ändern. In diesem Blog haben wir diskutiert, wie ein privater Konstruktor in Java die Anzahl der Objekte in einer Singleton-Klasse begrenzt.

Sie können den Code ausprobieren, um die Kenntnisse Ihres Java -Konstruktors zu erweitern. Wenn Sie ein tiefgreifendes Verständnis von Java erlangen möchten, schauen Sie sich den Kurs upGrad Executive PG Program in Full Stack Development an, der für Berufstätige entwickelt wurde, um Fachwissen in diesem Bereich zu erwerben.

Was sind Konstruktoren in der Programmierung?

Konstruktoren in der Programmierung sind die Methoden, die automatisch aufgerufen werden, wenn ein Objekt initialisiert wird. Der Zweck des Konstruktors besteht darin, das Objekt zu initialisieren. Konstruktoren sollten immer öffentlich sein und werden ohne Rückgabetyp deklariert. Konstruktoren werden verwendet, um das Objekt zu initialisieren und andere Aufgaben auszuführen, die nur einmal ausgeführt werden können. Konstruktoren werden auch verwendet, um die Initialisierung einer Klasse durchzuführen, d. h. um Aufgaben auszuführen, die die Klasse erstellen.

Welche Arten von Konstruktoren gibt es in Java?

Es gibt fünf Arten von Konstruktoren in Java. Sie sind: Konstruktoren ohne Argumente: Es hat eine Standardimplementierung, die ausgeführt wird, wenn die Klasse in den Speicher geladen wird. Eine Klasse, die keinen Konstruktor ohne Argumente hat, MUSS als final deklariert werden. Standardkonstruktoren: Dieser Konstruktor wird erstellt, wenn die Klasse in Java geschrieben wird, und wird verwendet, um alle Variablen (Attribute) der Klasse auf ihre Standardwerte (null oder null) zu initialisieren. Parametrisierte Konstruktoren: Dieser Konstruktor wird verwendet, um einige Variablen aus einigen Werten zu initialisieren. Konstruktoren ohne Rückgabewert: Wird verwendet, um einige Variablen aus einigen Werten zu initialisieren. Konstruktoren mit Rückgabewert: Wird verwendet, um einige Variablen aus einigen Werten zu initialisieren, und gibt auch einen Wert zurück.

Was ist ein privater Konstruktor in Java?

Private Konstruktoren können verwendet werden, um eine unveränderliche Klasse zu erstellen. Ohne private Konstruktoren zu verwenden, können wir unveränderliche Klassen erstellen, indem wir die Klasse final deklarieren und alle Attribute als final erstellen (z. B. private final String name;). Ein privater Konstruktor kann nicht direkt von Clientobjekten der Klasse aufgerufen werden. Sie können nur intern von Methoden der Klasse (auch private) aufgerufen werden. Sie können einen privaten Konstruktor mit einem oder mehreren Parametern haben. Der Rückgabetyp des Konstruktors darf kein primitiver boolescher Wert sein. Es kann entweder String oder Class sein.