Prywatny konstruktor w Javie: przypadki użycia wyjaśnione na przykładzie

Opublikowany: 2021-04-09

Spis treści

Wstęp

Prywatny konstruktor w Javie służy do ograniczania tworzenia obiektów. Jest to specjalny konstruktor instancji używany w statycznych klasach zawierających tylko składowe. Jeśli konstruktor jest zadeklarowany jako prywatny, jego obiekty są dostępne tylko z zadeklarowanej klasy. Nie możesz uzyskać dostępu do jego obiektów spoza klasy konstruktora.

Przypadki użycia prywatnego konstruktora

Dostęp do prywatnych konstruktorów w Javie jest możliwy tylko z poziomu klasy. Nie możesz uzyskać dostępu do prywatnego konstruktora z żadnej innej klasy. Jeśli obiekt nie jest jeszcze zainicjowany, możesz napisać funkcję publiczną, aby wywołać prywatnego instruktora. Jeśli obiekt jest już zainicjowany, możesz zwrócić tylko instancję tego obiektu. Konstruktor prywatny w Javie ma następujące przypadki użycia:

  • Możesz go używać ze statycznymi klasami tylko dla członków.
  • Możesz go używać ze statycznym narzędziem lub klasami stałymi.
  • Możesz go używać do obsługi klas singletonowych.
  • Możesz go użyć do przypisania nazwy, na przykład tworzenia przy użyciu metod fabrycznych.
  • Możesz go użyć, aby zapobiec podklasom.

Klasa Singleton

Konstruktor prywatny w Javie służy do tworzenia klasy singletona. Klasa singleton to klasa w Javie, która ogranicza liczbę obiektów deklarowanej klasy do jednego. Prywatny konstruktor w Javie zapewnia, że ​​w danym momencie tworzony jest tylko jeden obiekt. Ogranicza instancje klasy w zadeklarowanej klasie, dzięki czemu nie można utworzyć instancji klasy poza zadeklarowaną klasą. Klasy singleton można używać w koncepcjach dotyczących sieci i łączności z bazami danych.

Przykład 1: Poniższy przykład demonstruje, jak prywatny konstruktor w Javie ogranicza liczbę obiektów w klasie singleton.

importuj java.io.*;

klasa nowaKlasaTestowa {

statyczny obiekt newTestClass = null;

public int a = 20;

prywatna nowaKlasaTestowa() {

}

//stworzyliśmy prywatny konstruktor

statyczne publiczne newTestClass displayInstance()

/**

*displayInstance() to publiczna metoda, której użyjemy do utworzenia instancji.

* Wywołaj tę metodę, aby uzyskać dostęp do tych instancji spoza klasy.

*/

{

jeśli (obiekt == null)

obiekt = new newTestClass();

//utworzony zostaje obiekt klasy singleton

obiekt zwrotny;

}

}

klasa publiczna SingletonClass {

public static void main(String args[]) {

newTestClass instancja1 = newTestClass.displayInstance();

//wyświetlenie instancji klasy singleton poprzez wywołanie metody publicznej

newTestClass instancja2 = newTestClass.displayInstance();

//wyświetlenie instancji klasy singleton poprzez wywołanie metody publicznej

instancja1.a = instancja1.a + 26;

System.out.println(„Utworzona instancja 1 ma następującą wartość = ” + instance1.a);

System.out.println(„Utworzona instancja 2 ma następującą wartość = ” + instance2.a);

}

}

Wyjście

Utworzona instancja 1 ma następującą wartość = 46

Utworzona instancja 2 ma następującą wartość = 46

W powyższym programie wartość instancji 2 jest automatycznie aktualizowana, gdy aktualizujemy wartość obiektu instance1. Ta obserwacja pokazuje, że zarówno instancja 1, jak i instancja 2 odnoszą się do tego samego obiektu.

Przykład 2: Poniższy przykład ilustruje, w jaki sposób prywatny konstruktor w Javie zapewnia, że ​​jednocześnie tworzony jest nie więcej niż jeden obiekt.

// Program Java do implementacji klasy singleton

Importuj java.io.*;

public class newTestClass {

prywatne statyczne newTestClass var=null;

private newTestClass(){

//Prywatny konstruktor jest dostępny w klasie

}

public static newTestClass testObject(){

// Ta metoda zapewnia, że ​​w danym momencie tworzony jest tylko jeden obiekt

jeśli(zmienna==null){

var= new newTestClass();

}

zwróć zmn;

}

public void display(){

System.out.println("To jest przykład konstruktora Private używającego klasy Singleton.");

}

public static void main(String args[]){

newTestClass newObject= newTestClass.testObject();

nowyObiekt.display();

}

}

Wyjście

To jest przykład konstruktora Private używającego klasy Singleton.

Przykład 2: Konstruktor prywatny w Javie ograniczający liczbę wystąpień klas.

Ten przykład pokazuje, jak można ograniczyć liczbę wystąpień klasy, deklarując konstruktor prywatny.

public class limitInstanceCreationClass {

public static void main(String[] args) {

obiekt RestrictInstance;

int a=1;

podczas (a<=20)

{

obj = RestrictInstance.getLimInstance();

a++;

}

}

}

klasa RestrictInstance {

public static int varCount = 0;

/**

*utwórz prywatnego konstruktora, który zwiększa liczbę

*zmiennej varCount po każdym utworzeniu instancji

*/

private RestrictInstance() {

varCount++;

System.out.println(„Numer wystąpienia ” + varCount + ” jest tworzony.”);

}

publiczne statyczne zsynchronizowane RestrictInstance getLimInstance() {

if(liczbazn <5) {

zwróć nowe RestrictInstance();

}

System.out.println("Osiągnięto maksymalny limit instancji. Nie możesz tworzyć więcej instancji.");

System.gc();

zwróć null;

}

/**

*usuń instancję i zmniejsz liczbę

*zmiennej varCount

*/

publiczna nieważna finalizacja()

{

System.out.println("Instancja została usunięta.");

varCount–;

}}

Wyjście

Zostanie utworzona instancja numer 1.

Zostanie utworzona instancja numer 2.

Zostanie utworzona instancja numer 3.

Zostanie utworzona instancja numer 4.

Zostanie utworzona instancja numer 5.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Instancja została usunięta.

Instancja została usunięta.

Instancja została usunięta.

Instancja została usunięta.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Zostanie utworzona instancja numer 1.

Zostanie utworzona instancja numer 2.

Zostanie utworzona instancja numer 3.

Zostanie utworzona instancja numer 4.

Zostanie utworzona instancja numer 5.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Osiągnięto maksymalny limit instancji. Nie możesz już tworzyć instancji.

Instancja została usunięta.

Instancja została usunięta.

Instancja została usunięta.

Zostanie utworzona instancja numer 1.

Zostanie utworzona instancja numer 2.

Zostanie utworzona instancja numer 3.

Zostanie utworzona instancja numer 4.

Zostanie utworzona instancja numer 5.

Ucz się kursów oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Wniosek

Kod użyty w artykule ma jedynie charakter objaśniający. Możesz modyfikować stwierdzenia podane w przykładach zgodnie z własnymi wymaganiami. W tym blogu omawialiśmy, w jaki sposób prywatny konstruktor w Javie ogranicza liczbę obiektów w klasie singletona.

Możesz wypróbować kod, aby poszerzyć wiedzę swojego konstruktora Java . Jeśli chcesz uzyskać dogłębne zrozumienie języka Java, zapoznaj się z kursem UpGrad Executive PG Program in Full Stack Development , który jest przeznaczony dla pracujących profesjonalistów, aby zdobyć wiedzę w tej dziedzinie.

Czym są konstruktory w programowaniu?

Konstruktory w programowaniu to metody, które są wywoływane automatycznie podczas inicjowania obiektu. Celem konstruktora jest inicjalizacja obiektu. Konstruktory zawsze powinny być publiczne i są deklarowane bez zwracanego typu. Konstruktory służą do inicjowania obiektu i wykonywania innych zadań, które można wykonać tylko raz. Konstruktory służą również do wykonywania inicjalizacji klasy, czyli wykonywania zadań tworzących klasę.

Jakie są typy konstruktorów w Javie?

W Javie istnieje pięć typów konstruktorów. Są to: Konstruktory bezargumentowe: Ma domyślną implementację, która jest wykonywana, gdy klasa jest ładowana do pamięci. Klasa, która nie ma konstruktora bezargumentowego, MUSI być zadeklarowana jako ostateczna. Konstruktory domyślne: ten konstruktor jest tworzony, gdy klasa jest napisana w Javie i jest używany do inicjowania wszystkich zmiennych (atrybutów) klasy do ich wartości domyślnych (zero lub null). Konstruktory sparametryzowane: ten konstruktor służy do inicjowania niektórych zmiennych z niektórych wartości. Konstruktory bez zwracanej wartości: Służy do inicjalizacji niektórych zmiennych z niektórych wartości. Konstruktory ze zwracaną wartością: służy do inicjalizacji niektórych zmiennych z pewnych wartości, a także zwraca z wartością.

Co to jest prywatny konstruktor w Javie?

Konstruktory prywatne mogą służyć do tworzenia niezmiennej klasy. Bez używania prywatnych konstruktorów możemy tworzyć niezmienne klasy, deklarując klasę final i tworząc wszystkie atrybuty jako final (np. private final String name;). Konstruktor prywatny nie może być wywoływany bezpośrednio przez obiekty klienckie klasy. Mogą być wywoływane tylko wewnętrznie przez metody klasy (nawet prywatne). Możesz mieć prywatnego konstruktora z jednym lub większą liczbą parametrów. Nie możesz mieć zwracanego typu konstruktora jako prymitywnego typu logicznego. Może to być String lub Class.