Како применити приватни конструктор на Јави



Овај чланак ће вам пружити детаљно и свеобухватно знање о приватном конструктору на Јави и његову употребу са примерима.

Конструктори користе се за иницијализацију стања објекта. Слично методама, конструктор такође може да садржи колекцију изјава, које се не могу назвати ништа друго него упутствима. У овом чланку ћемо разговарати о Приватном конструктору у следећим редоследом:

Увод у конструктор на Јави

Конструктори се извршавају у време стварања објекта. Да бисте боље разумели конструктор и његове примене, само замислите оквир као класу. Претпоставља се да класа Бок има неке променљиве класе (тј. Дужину, ширину и висину). Међутим, у време стварања његовог објекта (тј. Бок постоји у меморији рачунара), тако може постојати и оквир без вредности дефинисане за његове димензионалне величине.





Очигледно, не.

Стога се уводи конструктор који додељује вредности променљивим класе при креирању објекта. То може изричито учинити програмер или сама Јава. Када то уради сама Јава, она се назива подразумеваним конструктором.



Неопходно је схватити да се било којој методи која поседује спецификатор приступа који кодирање даје конструктору, а који је учињен приватним, може приступити само унутар саме класе.

Приватни конструктор на Јави

Синглетон Цласс

Већ из самог назива класу можемо назвати синглетон ако ограничава број објеката те класе на један. Класа у таквим случајевима не може имати више од једног предмета. Класе синглетон користе се исцрпно у концептима попут умрежавања и повезивања база података. Класа синглетон је а приватна класа .



Мора постојати још један начин за издвајање инстанце класе и повратни метод за враћање резултата. Испод је прикладна илустрација истог. Први пиктограм приказује вероватни резултат где је вредност „а.к“ једнака 20, а вредност „б.к“ такође резултира 20. У коду, док дефинишемо синглетон приватну класу, њеним конструкторима се не може приступити изван класе.

Вредност а.к = 20

Вредност б.к = 20

како претворити двоструко у цео број у јави
// Јава програм за демонстрацију имплементације Синглетон // обрасца помоћу приватних конструктора. импорт јава.ио. * цласс МиСинглетон {статиц МиСинглетон инстанце = нулл публиц инт к = 10 // привате цонструцтор не може се приступити изван класе привате МиСинглетон () {} // Фабричка метода да би се корисницима пружиле инстанце статички јавни МиСинглетон гетИнстанце () {иф (инстанце == нулл) инстанце = нев МиСинглетон () ретурн инстанце}} // Класа класе возача Маин {публиц статиц воид маин (Стринг аргс []) {МиСинглетон а = МиСинглетон.гетИнстанце () МиСинглетон б = МиСинглетон.гетИнстанце () ак = ак + 10 Систем.оут.принтлн ('Валуе оф ак =' + ак) Систем.оут.принтлн ('Валуе оф бк =' + бк)}}

Утицај приватног конструктора на Јави

Приватни конструктори не могу приступити изведеним класама из друге класе. Дакле, морамо дати јавну функцију која позива приватни конструктор. У случају да објекат није иницијализован или морамо да вратимо инстанцу предмету ако је иницијализован. Ово је посебно корисно за објекте који се не могу иницијализовати. Приватни конструктор се користи у следећим случајевима:

  • Одговарајуће класе, које имају само статичке методе и чланове.
  • Специфичне класе, које су само широко користиле статичке завршне чланове (константе).
  • Да би се укључили синглови.
  • Укључити фабричке методе.

Да се ​​користе набрајања која су безбедна за тип.

Интерни ланац конструктора

Интерно уланчавање конструктора је када конструктор позове други конструктор исте класе онда се то може назвати уланчавањем конструктора. Наша је дужност да користимо ову кључну реч за позивање другог конструктора класе. У неким случајевима се користи за дефинисање неких подразумеваних вредности променљивих класе. Такође имајте на уму да други позив конструктора мора бити прва изјава у блоку кода.

Поред тога, не би требало бити рекурзивних позива, што ће створити бесконачну петљу. Погледајмо сада пример уланчавања конструктора у Јава програм.

пакет цом.јоурналдев.цонструцтор јавна класа Запослени {привате инт ид привате Стринг наме публиц Емплоиее () {тхис ('Јохн Дое', 999) Систем.оут.принтлн ('Дефаулт Емплоиее Цреатед')} публиц Емплоиее (инт и) { тхис ('Јохн Дое', и) Систем.оут.принтлн ('Емплоиее Цреатед витх Дефаулт Наме')} публиц Емплоиее (Стринг с, инт и) {тхис.ид = и тхис.наме = с Систем.оут.принтлн ( 'Запослени створен')} јавна статичка воид главна (Стринг [] аргс) {Запослени емп = нови запослени () Систем.оут.принтлн (емп) Запослени емп1 = нови запослени (10) Систем.оут.принтлн (емп1) Запослени емп2 = нови запослени ('Панкај', 20) Систем.оут.принтлн (емп2)} @Преузми јавни стринг тоСтринг () {ретурн 'ИД =' + ид + ', Наме =' + наме} публиц инт гетИд () {ретурн ид } публиц воид сетИд (инт ид) {тхис.ид = ид} публиц Стринг гетНаме () {ретурн наме} јавна празнина сетНаме (име низа) {тхис.наме = наме}}

Узорак дизајна класе Синглетон

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

  1. Прво направите приватну константну статичку инстанцу синглетон класе.

  2. Затим напишите статичку методу која враћа објекат синглетон класе коју смо креирали као инстанцу члана класе.

  3. Могуће је означити статичног члана као јавног за директан приступ константној статичкој инстанци.

  4. Класа синглетон се разликује од нормалне Јава класе у смислу инстанцирања. У нормалној класи се користи конструктор, али за синглетон класу користимо методу гет Инстанце ().

  • Члан на нивоу одељења (метод лење иницијализације):

  1. Прво, покрените конструктор као приватни.

  2. Затим креирајте приватну статичку инстанцу ове синглетон класе. Имајте на уму да га НЕ инстанцирате.

  3. Затим напишите статичку методу која проверава да ли члан статичне инстанце има нулу и покреће инстанцу. Коначно, враћа објекат класе синглетон.

  • Члан на нивоу класе (Лази Инитиализатион витх доубле лоцк Метход):

Размислите о томе да се изводе две нити тамо где обе истовремено улазе у наредбу „иф“ док је инстанца нулл. При чему једна нит улази у синхронизовани блок да би креирала инстанцу, док је друга блокирана. Како се прва нит налази у синхронизованом блоку, нит у реду ствара још један синглетон објект. Имајте на уму да док друга нит улази у синхронизовани блок, не успева да провери да ли инстанца није нулл.

  • Коришћење угнежђене унутрашње класе (метода лењивог учитавања):

Овде се заснива на Спецификацијама језика Јава (ЈЛС). Јава виртуелна машина учитава статичке чланове података само на захтев. Дакле, класа Синглетон прво учитава ЈВМ. Дакле, у класи не постоји статички члан података

Држач класе Синглетон не учитава СИНГЛЕ_ИНСТАНЦЕ. Када позивамо методу гетИнтанце, дешава се само ово. ЈЛС гарантује извршење иницијализације класе. Одредба за експлицитну синхронизацију на статичкој методи гетИнстанце () за учитавање и иницијализацију. Како иницијализација ствара статичку променљиву СИНГЛЕ_ИНСТАНЦЕ на секвенцијални начин, сви паралелни позиви гетИнстанце () вратит ће се исти без режијских трошкова синхронизације.

  • Коришћењем Енумса

Нису сви горе наведени приступи комплетна решења у свим случајевима. Више примерака горњих примена може се створити коришћењем рефлексије. У оба сценарија можемо заобићи приватни конструктор и створити више инстанци. Према томе, нови приступ је стварање синглетон класе помоћу енума. Како су енумска поља састављене временске константе, то су инстанце њиховог енум типа. Конструишу се када се први пут референцира на тип енум.

Овим смо дошли до краја чланка Привате Цонструцтор у Јави. Надам се да сте разумели приватне конструкторе и како се они могу користити у Јави.

Погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА дизајниран је за студенте и професионалце који желе да буду Јава програмер. Курс је дизајниран да вам пружи почетну предност у Јава програмирању и обучи вас како за основне тако и за напредне Јава концепте, заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре овог блога „Јава Туториал“ и јавићемо вам се што је пре могуће.