Kako implementirati privatni konstruktor u Javi

Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o privatnom konstruktoru u Javi i njegovu primjenu.

Konstruktori koriste se za inicijalizaciju stanja objekta. Slično metodama, konstruktor također može sadržavati zbirku naredbi, koje se ne mogu nazvati ništa drugo nego uputama. U ovom ćemo članku razgovarati o Private Constructoru u sljedećim redoslijedom:

Uvod u konstruktor na Javi

Konstruktori se izvode u vrijeme stvaranja objekta. Da biste bolje razumjeli konstruktor i njegove primjene, samo zamislite okvir kao klasu. Pretpostavlja se da Box klasa ima neke varijable klase (tj. Dužinu, širinu i visinu). Međutim, u vrijeme stvaranja njegovog objekta (tj. Kutija postoji u memoriji računala), tako može postojati i kutija bez definirane vrijednosti za svoje dimenzijske veličine.





Očito, ne.

Stoga se uvodi konstruktor za dodjeljivanje vrijednosti varijablama klase pri stvaranju objekta. To može izričito učiniti programer ili sama Java. Kada to učini sama Java, naziva se zadanim konstruktorom.



Neophodno je shvatiti da se bilo kojoj metodi koja posjeduje specifikator pristupa koji daje koder konstruktoru, a koji postaje privatnim, može pristupiti samo unutar same klase.

je a ima javu

Privatni konstruktor na Javi

Jednokrevetna klasa

Iz samog imena klasu možemo nazvati singleton ako ograničava broj objekata te klase na jedan. Klasa u takvim slučajevima ne može imati više od jednog predmeta. Singleton klase iscrpno se koriste u konceptima poput umrežavanja i povezivanja baza podataka. Jednokrevetna klasa je a privatna klasa .



Mora postojati drugi način za izdvajanje instance klase i metoda povratka za vraćanje rezultata. Ispod je prikladna ilustracija istog. Prvi piktogram prikazuje vjerojatni rezultat gdje je vrijednost 'a.x' jednaka 20, a vrijednost 'b.x' također rezultira 20. U kodu, dok definiramo singleton privatnu klasu, njenim se konstruktorima ne može pristupiti izvan klase.

Vrijednost a.x = 20

Vrijednost b.x = 20

// Java program za demonstraciju implementacije Singleton // uzorka pomoću privatnih konstruktora. import java.io. * class MySingleton {static MySingleton instance = null public int x = 10 // privatnom konstruktoru nije moguće pristupiti izvan klase private MySingleton () {} // Tvornička metoda da bi se korisnicima pružile instance statički javni MySingleton getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Klasa klase vozača Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Value of ax =' + ax) System.out.println ('Value of bx =' + bx)}}

Utjecaj privatnog konstruktora na Javi

Privatni konstruktori ne mogu pristupiti izvedenim klasama iz druge klase. Dakle, moramo dati javnu funkciju koja poziva privatni konstruktor. U slučaju da objekt nije inicijaliziran ili mu moramo vratiti instancu ako je inicijaliziran. To je posebno korisno za objekte koji se ne mogu inicijalizirati. Privatni konstruktor koristi se u sljedećim slučajevima:

  • Odgovarajuće klase, koje imaju samo statičke metode i članove.
  • Specifične klase, koje imaju samo široko korištene statičke konačne članove (konstante).
  • Uključiti singletone.
  • Ugraditi tvorničke metode.

Koristiti nabrajanja koja su sigurna za tip.

Unutarnji lanac konstruktora

Interno ulančavanje konstruktora je kada konstruktor pozove drugi konstruktor iste klase tada se to može nazvati ulančavanjem konstruktora. Naša je dužnost koristiti ovu ključnu riječ za pozivanje drugog konstruktora klase. U nekim se slučajevima koristi za definiranje nekih zadanih vrijednosti varijabli klase. Također imajte na umu da drugi poziv konstruktora mora biti prva izjava u bloku koda.

Uz to, ne bi trebalo biti rekurzivnih poziva, što će stvoriti beskonačnu petlju. Pogledajmo sada primjer ulančavanja konstruktora u Java program.

paket com.journaldev.constructor javna klasa zaposlenik {private int id private String name public Employee () {this ('John Doe', 999) System.out.println ('Default Employee Created')} public Employee (int i) { this ('John Doe', i) System.out.println ('Employee Created with Default Name')} javni zaposlenik (String s, int i) {this.id = i this.name = s System.out.println ( 'Stvoren zaposlenik')} javna statička void glavna (String [] args) {Zaposlenik emp = novi zaposlenik () System.out.println (emp) Zaposlenik emp1 = novi zaposlenik (10) System.out.println (emp1) Zaposlenik emp2 = novi zaposlenik ('Pankaj', 20) System.out.println (emp2)} @Preuzmi javni niz toString () {return 'ID =' + id + ', Name =' + name} public int getId () {return id } javna void setId (int id) {this.id = id} javni niz getName () {return name} javna praznina setName (ime niza) {this.name = name}}

Uzorak dizajna klase Singleton

  • Član na razini klase (nestrpljiva metoda inicijalizacije):

  1. Prvo napravite privatnu konstantnu statičku instancu singleton klase.

  2. Zatim napišite statičku metodu koja vraća objekt singleton klase koju smo kreirali kao instancu člana klase.

  3. Moguće je označiti statičnog člana kao javnog za izravan pristup konstantnoj statičkoj instanci.

  4. Klasa singleton razlikuje se od normalne Java klase u smislu instanciranja. U normalnoj klasi koristi se konstruktor, ali za singleton klasu koristimo metodu get Instance ().

  • Član na razini razreda (lijena metoda inicijalizacije):

  1. Prvo inicirajte konstruktor kao privatni.

  2. Zatim stvorite privatnu statičku instancu ove singleton klase. Imajte na umu da ga NE instancirate.

  3. Zatim napišite statičku metodu koja provjerava je li statički član instance null i pokreće instancu. Napokon, vraća objekt klase singleton.

  • Član na razini klase (Lijena inicijalizacija s metodom dvostrukog zaključavanja):

Razmislite o pokretanju dviju niti u kojima obje istovremeno ulaze u naredbu 'if' dok je instanca null. Gdje jedna nit ulazi u sinkronizirani blok da bi stvorila instancu, dok je druga blokirana. Kako se prva nit nalazi u sinkroniziranom bloku, nit u redu stvara još jedan singleton objekt. Imajte na umu da dok druga nit ulazi u sinkronizirani blok, ne provjerava je li instanca ne-null.

  • Korištenje ugniježđene unutarnje klase (metoda lijenog učitavanja):

Ovdje se temelji na specifikacijama jezika Java (JLS). Java virtualni stroj učitava statičke članove podataka samo na zahtjev. Dakle, klasa Singleton učitava prvo JVM. Dakle, u klasi ne postoji statički član podataka

Držač klase Singleton ne učitava SINGLE_INSTANCE. Kada pozivamo metodu getIntance, događa se samo ovo. JLS jamči izvršenje inicijalizacije klase. Odredba za eksplicitnu sinkronizaciju na statičkoj metodi getInstance () za učitavanje i inicijalizaciju. Kako inicijalizacija stvara statičku varijablu SINGLE_INSTANCE na sekvencijalni način, svi istodobni pozivi getInstance () vratit će se isti bez režijskih troškova sinkronizacije.

Nisu svi gore navedeni pristupi cjelovita rješenja u svim slučajevima. Više primjeraka gornjih implementacija može se stvoriti pomoću refleksije. U oba scenarija možemo zaobići privatni konstruktor i stvoriti više instanci. Stoga je novi pristup stvaranje singleton klase pomoću enuma. Kako se enumska polja sastavljaju vremenske konstante, to su primjerci svog enum tipa. Konstruiraju se kada se prvi put referencira tip enum.

Ovim smo došli do kraja članka Private Constructor u Javi. Nadam se da ste razumjeli privatne konstruktore i kako se oni mogu koristiti u Javi.

Pogledajte Edureka, pouzdana tvrtka za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA namijenjen je studentima i profesionalcima koji žele biti programer Java. Tečaj je dizajniran da vam pruži početnu prednost u Java programiranju i osposobi vas za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga 'Java Tutorial' i javit ćemo vam se što je prije moguće.