Как да внедрим частен конструктор в Java



Тази статия ще ви предостави подробни и изчерпателни познания за частния конструктор в Java и използването му с примери.

Конструктори се използват за инициализиране на състоянието на обекта. Подобно на методите, конструкторът може да съхранява и колекция от изрази, които не могат да бъдат наречени нищо друго освен инструкции. В тази статия ще обсъдим Private Constructor в в следния ред:

Въведение в конструктора в Java

Конструкторите се изпълняват по време на създаването на обекта. За да разберете по-добре конструктора и неговите приложения, просто си представете кутията като клас. Предполага се, че клас Box има някои променливи на класа (т.е. дължина, ширина и височина). Към момента на създаване на обекта му (т.е. Box съществува в паметта на компютъра), така че кутия може да съществува без дефинирана стойност за нейните размерни величини.





Очевидно не.

Следователно се въвежда конструктор за присвояване на стойности на променливи на класа при създаването на обект. Това може да бъде направено изрично от програмиста или от самата Java. Когато се извършва от самата Java, тя се нарича конструктор по подразбиране.



Наложително е да се разбере, че всеки метод, който притежава спецификатор за достъп, предоставен от кодера на конструктора, който е направен частен, може да бъде достъпен само в самия клас.

Частен конструктор в Java

Клас сингълтън

От самото име можем да наречем клас единичен, ако ограничава броя на обектите от този клас до един. Клас не може да има повече от един обект в такива случаи. Единичните класове се използват изчерпателно в понятия като мрежи и свързаност с бази данни. Класът на сингълтън е a частен клас .



Трябва да има друг начин за извличане на екземпляра на класа и метод за връщане за връщане на резултата. По-долу е подходяща илюстрация на същото. Първият пиктограм изобразява вероятния резултат, където стойността на „a.x“ се равнява на 20, а стойността на „b.x“ също води до 20. В кода, докато дефинираме единичния частен клас, конструкторите на него не могат да бъдат достъпни извън класа.

Стойност на ax = 20

Стойност на b.x = 20

// Java програма за демонстриране на изпълнението на Singleton // модел, използвайки частни конструктори. import java.io. * class MySingleton {static MySingleton instance = null public int x = 10 // private constructor не може да бъде достъпен извън класа private MySingleton () {} // Фабричен метод, за да предостави на потребителите екземпляри статичен публичен MySingleton getInstance () {if (instance == null) instance = new MySingleton () return instance}} // Клас на класа на драйвера Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Стойност на ax =' + ax) System.out.println ('Стойност на bx =' + bx)}}

Въздействие на частния конструктор в Java

Частните конструктори нямат достъп до производни класове от друг клас. По този начин трябва да дадем публична функция, която извиква частния конструктор. В случай, че обектът не е инициализиран или трябва да изпратим обратно екземпляр на обекта, ако е инициализиран. Това е особено полезно за обекти, които не могат да бъдат инициализирани. Частен конструктор се използва в следните случаи:

  • Съответните класове, които имат само статични методи и членове.
  • Специфичните класове, които са използвали само широко използвани статични крайни членове (константи).
  • За включване на единични.
  • Да се ​​включат фабричните методи.

Да се ​​използват изброявания, които са безопасни за типа.

Вътрешна верига на конструктора

Вътрешно конструкторско обвързване е, когато конструктор извика друг конструктор от същия клас, тогава това може да се нарече верига на конструктор. Наше задължение е да използваме тази ключова дума, за да извикаме друг конструктор на класа. В някои случаи се използва за дефиниране на някои стойности по подразбиране на променливите на класа. Моля, имайте предвид също, че друго извикване на конструктор трябва да бъде първото изявление в кодовия блок.

Освен това не трябва да има рекурсивни повиквания, които ще създадат безкраен цикъл. Нека сега разгледаме един пример за верига на конструктор в Java програма.

пакет com.journaldev.constructor публичен клас Служител {private int id private Низ на име public Employee () {this ('John Doe', 999) System.out.println ('Създаден служител по подразбиране')} public Служител (int i) { this ('John Doe', i) System.out.println ('Служител, създаден с име по подразбиране')} public Employee (String s, int i) {this.id = i this.name = s System.out.println ( 'Служител е създаден')} публична статична невалидна основна (String [] args) {Служител emp = нов служител () System.out.println (emp) Служител emp1 = нов служител (10) System.out.println (emp1) Служител emp2 = нов служител ('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 (име на низа) {this.name = name}}

Модел за дизайн на клас Singleton

  • Член на ниво клас (нетерпелив метод за инициализация):

  1. Първо, направете частен постоянен статичен екземпляр на сингълтон клас.

    какво е чарат в Java
  2. След това напишете статичен метод, който връща обекта на единичен клас, който създадохме като екземпляр от член на класа.

  3. Възможно е да се маркира статичен член като публичен за директен достъп до постоянен статичен екземпляр.

  4. Единичният клас варира от нормалния Java клас от гледна точка на създаване на екземпляр. В нормален клас се използва конструктор, но за единичен клас използваме метода get Instance ().

  • Член на ниво клас (Мързелив метод за инициализация):

  1. Първо, инициирайте конструктор като частен.

  2. След това създайте частен статичен екземпляр на този единичен клас. Имайте предвид, че НЕ трябва да го създавате.

  3. След това напишете статичен метод, който проверява статичния член на екземпляра за нула и инициира екземпляра. И накрая, той връща обект от сингълтон класа.

  • Членът на ниво клас (Мързелива инициализация с метод на двойно заключване):

Помислете за две изпълнени нишки, при които и двете влизат в оператора „if“ едновременно, докато екземплярът е нулев. При което едната нишка влиза в синхронизиран блок, за да създаде екземпляр, докато другата е блокирана. Тъй като първата нишка се намира в синхронизирания блок, нишката в опашката създава друг единичен обект. Моля, обърнете внимание, че тъй като втората нишка влиза в синхронизиран блок, тя не може да провери дали екземплярът не е нулев.

  • Използване на вложен вътрешен клас (Lazy Load метод):

Тук той се основава на Java Language Specifications (JLS). Виртуалната машина Java зарежда статични членове на данни само при поискване. По този начин класът Singleton се зарежда първо от JVM. Следователно в клас няма статичен член с данни

Притежателят на клас Singleton не зарежда SINGLE_INSTANCE. Когато извикаме метода getIntance, се случва само това. JLS гарантира изпълнението на инициализацията на класа. Разпоредба за изрично синхронизиране на статичен метод getInstance () за зареждане и инициализация. Тъй като инициализацията създава статичната променлива SINGLE_INSTANCE по последователен начин, всички едновременни извиквания на getInstance () ще се върнат едни и същи без допълнителни разходи за синхронизация.

  • Чрез използване на Enums

Не всички горепосочени подходи са цялостни решения във всички случаи. Множество екземпляри на горните реализации могат да бъдат създадени чрез използване на отражение. И в двата сценария можем да заобиколим частния конструктор и да създадем множество екземпляри. Следователно, нов подход е да се създаде единичен клас с помощта на enums. Тъй като полетата за изброяване са съставени времеви константи, те са екземпляри от техния тип преброяване. Те се конструират, когато за първи път е посочен тип enum.

С това стигаме до края на статията Private Constructor в Java. Надявам се, че сте разбрали частните конструктори и как те могат да се използват в Java.

Вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен за студенти и професионалисти, които искат да бъдат Java Developer. Курсът е създаден, за да ви даде начален старт в програмирането на Java и да ви обучи както за основни, така и за разширени Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари в този блог „Урок за Java“ и ние ще се свържем с вас възможно най-скоро.