Com implementar el constructor privat a Java



Aquest article us proporcionarà un coneixement detallat i exhaustiu de Private Constructor a Java i s’utilitzarà amb exemples.

Constructors s’utilitzen per inicialitzar l’estat d’un objecte. De manera similar als mètodes, un constructor també pot contenir una col·lecció d’instruccions, que no es poden anomenar més que instruccions. En aquest article, parlarem de constructor privat a en l'ordre següent:

Introducció a Constructor a Java

Els constructors s’executen en el moment de la creació d’objectes. Per obtenir una millor comprensió del constructor i les seves aplicacions, només cal pensar en un quadre com a classe. Es suposa que una classe Box té algunes variables de classe (és a dir, longitud, amplada i alçada). Tanmateix, en el moment de crear el seu objecte (és a dir, existeix un quadre a la memòria de l’ordinador), també pot existir un quadre sense valor definit per a les seves quantitats dimensionals.





Viouslybviament, no.

Per tant, s’introdueix un constructor per assignar valors a variables de classe en crear objectes. Això el pot fer explícitament el programador o el mateix Java. Quan ho fa el mateix Java, s’anomena constructor per defecte.



És imprescindible entendre que qualsevol mètode que posseeix un especificador d’accés proporcionat pel codificador al constructor, que es fa privat, només es pot accedir a la mateixa classe.

Constructor privat a Java

Classe Singleton

Des del propi nom, podem anomenar a una classe un solitari si restringeix el nombre d’objectes d’aquesta classe a un. Una classe no pot tenir més d’un objecte en aquests casos. Les classes de singleton s’utilitzen exhaustivament en conceptes com la connectivitat de xarxes i bases de dades. La classe de Singleton és una classe privada .



Hi ha d’haver una altra manera d’extreure la instància de la classe i un mètode de retorn per recuperar el resultat. A continuació es mostra una il·lustració adequada del mateix. El primer pictograma mostra el resultat probable on el valor de 'a.x' equival a 20 i el valor de 'b.x' també en resulta 20. Al codi, mentre definim la classe privada singleton, no es pot accedir als constructors d’aquesta fora de la classe.

Valor de a.x = 20

Valor de b.x = 20

// Programa Java per demostrar la implementació del patró Singleton // mitjançant constructors privats. import java.io. * class MySingleton {static MySingleton instance = null public int x = 10 // no es pot accedir al constructor privat fora de la classe private MySingleton () {} // Mètode de fàbrica per proporcionar als usuaris instàncies MySingleton estàtiques getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Classe de classe de controladors Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Valor de ax =' + ax) System.out.println ('Valor de bx =' + bx)}}

Impacte del constructor privat a Java

Els constructors privats no poden accedir a classes derivades d'una altra classe. Per tant, hem de donar una funció pública, que anomena constructor privat. En cas que l’objecte no s’inicialitzi o haurem de tornar una instància a l’objecte si s’ha inicialitzat. Això és especialment útil per a objectes que no es poden inicialitzar. Un constructor privat s'utilitza en els casos següents:

  • Les classes respectives, que només tenen membres i mètodes estàtics.
  • Les classes específiques, que només han utilitzat àmpliament membres finals estàtics (constants).
  • Per incorporar singletons.
  • Incorporar els mètodes de fàbrica.

Utilitzar enumeracions segures per a tipus.

Encadenament intern de constructors

L’encadenament intern del constructor és quan un constructor crida a un altre constructor de la mateixa classe, llavors es pot anomenar encadenament de constructors. El nostre deure és utilitzar aquesta paraula clau per trucar a un altre constructor de la classe. En alguns casos, s’utilitza per definir alguns valors per defecte de les variables de classe. Tingueu també en compte que una altra trucada de constructor ha de ser la primera sentència del bloc de codi.

Els serveis d’integració de servidor sql són tutorial pas a pas

A més, no hi hauria d’haver trucades recursives, que crearan un bucle infinit. Vegem ara un exemple d’un constructor encadenat al programa Java.

package com.journaldev.constructor public class Employee {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')} Employee public (String s, int i) {this.id = i this.name = s System.out.println ( 'Employee Created')} 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 } public void setId (int id) {this.id = id} public String getName () {return name} public void setName (nom de la cadena) {this.name = name}}

Patró de disseny de la classe Singleton

  • Membre a nivell de classe (mètode d'inicialització desitjós):

  1. En primer lloc, feu una instància estàtica privada constant d’una classe singleton.

  2. A continuació, escriviu un mètode estàtic que retorni l'objecte d'una classe singleton, que hem creat com a instància membre de la classe.

  3. És possible marcar un membre estàtic com a públic per accedir directament a una instància estàtica constant.

  4. La classe de singleton varia d'una classe Java normal en termes d'instanciació. En una classe normal, s’utilitza un constructor, però per a la classe singleton fem servir el mètode get Instance ().

  • Membre de classe (mètode d'inicialització mandrós):

  1. En primer lloc, inicieu un constructor com a privat.

  2. A continuació, creeu una instància estàtica privada d'aquesta classe de singleton. Tingueu en compte que NO l’instancieu.

  3. A continuació, escriviu un mètode estàtic que comprovi si el membre de la instància estàtica és nul i inicia la instància. Finalment, retorna un objecte de la classe Singleton.

  • Membre de nivell de classe (inicialització mandrosa amb mètode de doble bloqueig):

Penseu en execució de dos fils on tots dos entren dins de la sentència 'if' simultàniament mentre la instància és nul·la. On, un fil entra en un bloc sincronitzat per crear una instància, mentre que l'altre està bloquejat. Quan el primer fil resideix al bloc sincronitzat, el fil de la cua crea un altre objecte singleton. Tingueu en compte que a mesura que el segon fil entra en un bloc sincronitzat, no comprova si la instància no és nul·la.

  • Utilitzant la classe interna imbricada (mètode Lazy Load):

Aquí es basa en les especificacions del llenguatge Java (JLS). La màquina virtual Java carrega membres de dades estàtiques només a demanda. Per tant, la classe Singleton es carrega primer per la JVM. Per tant, no hi ha cap membre de dades estàtiques en una classe

El titular de la classe Singleton no carrega SINGLE_INSTANCE. Quan invocem el mètode getIntance, només es produeix això. JLS garanteix l’execució de la inicialització de la classe. Una provisió per a la sincronització explícita del mètode estàtic getInstance () per carregar i inicialitzar. A mesura que la inicialització crea la variable estàtica SINGLE_INSTANCE de manera seqüencial, totes les invocacions simultànies del getInstance () tornaran a ser iguals sense sobrecàrregues de sincronització.

No tots els plantejaments anteriors són solucions completes en tots els casos. Es poden crear diverses instàncies de les implementacions anteriors mitjançant la reflexió. En ambdós escenaris, podem passar per alt el constructor privat i crear diverses instàncies. Per tant, un nou enfocament és crear una classe de singleton mitjançant enums. Com que els camps enums són constants de temps compilats, són instàncies del seu tipus enum. Es construeixen quan es fa referència per primera vegada al tipus enum.

Amb això, arribem al final de l'article de Constructor privat a Java. Espero que entengueu els constructors privats i com es poden utilitzar a Java.

Consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació i certificació de Java J2EE i SOA d’Edureka està dissenyat per a estudiants i professionals que vulguin ser desenvolupador de Java. El curs està dissenyat per donar-vos un avantatge en la programació de Java i formar-vos tant per a conceptes bàsics com avançats de Java juntament amb diversos marcs Java com Hibernate i Spring.

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc “Tutorial de Java” i us respondrem el més aviat possible.