Kako implementirati zasebni konstruktor v Javo



V tem članku boste našli podrobno in celovito znanje o zasebnem konstruktorju v Javi ter njegovo uporabo s primeri.

Konstruktorji se uporabljajo za inicializacijo stanja predmeta. Podobno kot metode lahko tudi konstruktor hrani zbirko stavkov, ki ji lahko rečemo samo navodila. V tem članku bomo razpravljali o zasebnem konstruktorju v v naslednjem vrstnem redu:

Uvod v konstruktor v Javi

Konstruktorji se izvajajo v času ustvarjanja predmeta. Če želite bolje razumeti konstruktor in njegove aplikacije, si omislite okvir kot razred. Predpostavlja se, da ima razred Box nekatere spremenljivke razreda (tj. Dolžina, širina in višina). Vendar lahko v času ustvarjanja predmeta (tj. Box obstaja v pomnilniku računalnika) torej obstaja polje, za katerega dimenzijske količine niso določene vrednosti.





Očitno je, da ne.

Zato je predstavljen konstruktor za dodelitev vrednosti spremenljivkam razreda pri ustvarjanju predmeta. To lahko izrecno stori programer ali sama Java. Ko jo Java opravi sama, se imenuje kot privzeti konstruktor.



Nujno je razumeti, da je do katere koli metode, ki ima specifikator dostopa, ki ga da kodirnik do konstruktorja, ki postane zaseben, mogoče dostopati samo znotraj samega razreda.

Zasebni konstruktor v Javi

Singleton razred

Iz samega imena lahko razred imenujemo singleton, če omejuje število predmetov tega razreda na enega. Razred v takih primerih ne more imeti več kot enega predmeta. Razredi singleton se izčrpno uporabljajo v konceptih, kot so mreženje in povezljivost baz podatkov. Singleton razred je zasebni razred .



Obstajati mora drug način za izvleček primerka razreda in metoda vrnitve za vrnitev rezultata. Spodaj je primerna ilustracija istega. Prvi piktograf prikazuje verjetni rezultat, kjer je vrednost 'a.x' enaka 20, vrednost 'b.x' pa 20. V kodi, medtem ko definiramo zasebni razred singleton, do njegovih konstruktorjev ni mogoče dostopati zunaj razreda.

Vrednost a.x = 20

začetek uporabe delovne mize mysql

Vrednost b.x = 20

// Java program za prikaz izvajanja vzorca Singleton // z uporabo zasebnih konstruktorjev. import java.io. * class MySingleton {static MySingleton instance = null public int x = 10 // zasebnega konstruktorja ni mogoče dostopati zunaj razreda private MySingleton () {} // Tovarniška metoda za zagotavljanje uporabnikom statičnih javnih primerkov MySingleton getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Razred razreda voznika 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)}}

Vpliv zasebnega konstruktorja v Javi

Zasebni konstruktorji ne morejo dostopati do izvedenih razredov iz drugega razreda. Tako moramo dati javno funkcijo, ki pokliče zasebni konstruktor. V primeru, da objekt ni inicializiran ali pa moramo predmet poslati nazaj, če je bil inicializiran. To je še posebej koristno za predmete, ki jih ni mogoče inicializirati. Zasebni konstruktor se uporablja v naslednjih primerih:

  • Ustrezni razredi, ki imajo samo statične metode in člane.
  • Posebni razredi, ki imajo le pogosto uporabljene statične končne člane (konstante).
  • Za vključitev enojnih posnetkov.
  • Vključitev tovarniških metod.

Uporabiti naštevanja, ki so varna za tip.

Notranje veriženje konstruktorja

Notranje veriženje konstruktorja je, kadar konstruktor pokliče drugega konstruktorja istega razreda, potem ga lahko imenujemo veriga konstruktorja. Naša dolžnost je, da s to ključno besedo pokličemo drugega konstruktorja razreda. V nekaterih primerih se uporablja za določanje nekaterih privzetih vrednosti spremenljivk razreda. Upoštevajte tudi, da mora biti drugi klic konstruktorja prvi stavek v bloku kode.

zaključi program v javi

Poleg tega ne sme biti rekurzivnih klicev, ki bodo ustvarili neskončno zanko. Oglejmo si zdaj primer verige konstruktorjev v programu Java.

paket com.journaldev.constructor javni razred Zaposleni {private int id private Ime niza 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')} public Employee (String s, int i) {this.id = i this.name = s System.out.println ( 'Zaposleni ustvarjen')} public static void main (String [] args) {Employee emp = new Employee () System.out.println (emp) Employee emp1 = new Employee (10) System.out.println (emp1) Employee emp2 = new Employee ('Pankaj', 20) System.out.println (emp2)} @Override public String toString () {return 'ID =' + id + ', Name =' + name} public int getId () {return id } javna praznina setId (int id) {this.id = id} javni niz getName () {return ime} javna praznina setName (ime niza) {this.name = ime}}

Vzorec oblikovanja razreda Singleton

  • Član na ravni razreda (metoda nestrpne inicializacije):

  1. Najprej naredite zasebni konstantni statični primerek razreda singleton.

  2. Nato napišite statično metodo, ki vrne objekt razreda singleton, ki smo ga ustvarili kot primerek člana razreda.

  3. Statičnega člana je mogoče označiti kot javnega za neposreden dostop do stalnega statičnega primerka.

  4. Razred singleton se razlikuje od običajnega razreda Java v smislu instanciranja. V običajnem razredu se uporablja konstruktor, za enojni razred pa metoda get Instance ().

  • Član na ravni razreda (metoda lene inicializacije):

  1. Najprej sprožite konstruktor kot zasebni.

  2. Nato ustvarite zasebni statični primerek tega posameznega razreda. Ne pozabite, da ga NE ustvarite.

  3. Nato napišite statično metodo, ki preveri, ali je član statičnega primerka ničen, in sproži primerek. Končno vrne objekt razreda singleton.

  • Član na ravni razreda (lena inicializacija z metodo dvojne ključavnice):

Razmislite o tem, da se izvajata dve niti, kjer obe hkrati istočasno prideta v stavek »if«, ko je primerek ničen. Kjer ena nit gre v sinhronizirani blok, da ustvari primerek, druga pa je blokirana. Ko je prva nit v sinhroniziranem bloku, nit v čakalni vrsti ustvari še en enokraten objekt. Ko druga nit vstopi v sinhronizirani blok, ne more preveriti, ali primerek ni nulen.

  • Uporaba ugnezdenega notranjega razreda (metoda lenobnega nalaganja):

Tu temelji na specifikacijah jezika Java (JLS). Navidezni stroj Java naloži statične člane podatkov samo na zahtevo. Tako razred Singleton najprej naloži JVM. Zato v razredu ni člana statičnega podatka

Imetnik razreda Singleton ne naloži SINGLE_INSTANCE. Ko prikličemo metodo getIntance, se zgodi le ta. JLS zagotavlja izvedbo inicializacije razreda. Določba za izrecno sinhronizacijo pri statični metodi getInstance () za nalaganje in inicializacijo. Ker inicializacija zaporedno ustvari statično spremenljivko SINGLE_INSTANCE, se bodo vsi sočasni klici funkcije getInstance () vrnili enaki brez sinhronizacije.

Vsi zgornji pristopi niso popolne rešitve v vseh primerih. Z uporabo refleksije je mogoče ustvariti več primerkov zgornjih izvedb. V obeh scenarijih lahko zaobidemo zasebni konstruktor in ustvarimo več primerkov. Zato je nov pristop ustvariti singleton razred z uporabo enumov. Ko so polja enumov sestavljena iz časovnih konstant, so primerki njihovega tipa enum. Konstruirajo se, ko je prvič naveden tip enum.

S tem smo prišli do konca članka Private Constructor v Javi. Upam, da ste razumeli zasebne konstruktorje in kako jih je mogoče uporabljati v Javi.

Oglejte si Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je namenjen študentom in strokovnjakom, ki želijo biti razvijalec Java. Tečaj je zasnovan tako, da vam omogoči uvod v programiranje Java in vas usposobi za osnovne in napredne koncepte Java, skupaj z različnimi Java okviri, kot so Hibernate & Spring.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje tega bloga 'Vadnica za Java', mi se vam bomo javili v najkrajšem možnem času.