تعمیر کار کسی چیز کی حالت کو شروع کرنے کے لئے استعمال ہوتے ہیں۔ طریقوں کی طرح ، ایک تعمیر کنندہ بیانات کا مجموعہ بھی رکھ سکتا ہے ، جسے ہدایت کے سوا کچھ نہیں کہا جاسکتا ہے۔ اس مضمون میں ، ہم پرائیویٹ کنسٹرکٹر کے بارے میں بات کریں گے مندرجہ ذیل ترتیب میں:
- جاوا میں کنسٹرکٹر کا تعارف
- سنگلٹن کلاس
- جاوا میں نجی تعمیراتی اثر
- اندرونی کنسٹرکٹر زنجیر
- سنگلٹن کلاس ڈیزائن پیٹرن
جاوا میں کنسٹرکٹر کا تعارف
تعمیرات آبجیکٹ کی تخلیق کے وقت عمل میں لائے جاتے ہیں۔ کنسٹرکٹر اور اس کی ایپلی کیشنز کے بارے میں بہتر تفہیم حاصل کرنے کے لئے ، بکس کو بطور کلاس سوچیں۔ ایک باکس کلاس میں کچھ طبقے کے متغیر (یعنی لمبائی ، چوڑائی اور اونچائی) سمجھا جاتا ہے۔ تاہم ، اپنا اعتراض بنانے کے وقت (یعنی کمپیوٹر کی یادداشت میں باکس موجود ہے) ، لہذا ایک خانہ اس کی جہتی مقدار کے ل defined کسی قدر کی تعریف کے بغیر موجود ہوسکتا ہے۔
ظاہر ہے ، نہیں۔
لہذا ، آبجیکٹ کی تخلیق میں کلاس متغیر کو اقدار تفویض کرنے کے لئے ایک کنسٹرکٹر متعارف کرایا گیا ہے۔ یہ واضح طور پر پروگرامر یا جاوا کے ذریعہ کیا جاسکتا ہے۔ جب خود جاوا خود کرتا ہے تو اسے بطور ڈیفالٹ کنسٹرکٹر کہا جاتا ہے۔
یہ سمجھنا ضروری ہے کہ کوئی بھی طریقہ ، جس میں کوڈر کے ذریعہ کنسٹرکٹر کے ذریعہ فراہم کردہ ایکسیس اسپیفلائر موجود ہوتا ہے ، جسے نجی بنایا جاتا ہے ، صرف طبقے کے اندر ہی اس تک رسائی حاصل کی جاسکتی ہے۔
سنگلٹن کلاس
خود ہی نام سے ، ہم کلاس کو سنگلٹن کہہ سکتے ہیں اگر وہ اس کلاس کے اشیاء کی تعداد کو کسی ایک پر محدود کردے۔ ایسے معاملات میں کلاس کے پاس ایک سے زیادہ شے نہیں ہوسکتی ہیں۔ سنگلٹن کلاسوں کو نیٹ ورکنگ اور ڈیٹا بیس کنیکٹیویٹی جیسے تصورات میں مکمل طور پر استعمال کیا جاتا ہے۔ سنگلٹن کلاس ہے a نجی کلاس .
کلاس کی مثال نکالنے کا دوسرا راستہ اور نتیجہ واپس لانے کے لئے واپسی کا طریقہ ہونا ضروری ہے۔ ذیل میں اسی کی ایک مناسب مثال ہے۔ پہلے تصویری نمونہ میں اس امکانی نتیجہ کو دکھایا گیا ہے جہاں 'a.x' کی قدر 20 کے برابر ہے اور 'b.x' کی قیمت بھی 20 کے نتیجے میں آتی ہے۔ کوڈ میں ، جبکہ ہم سنگلٹن پرائیویٹ کلاس کی وضاحت کرتے ہیں ، اس کے تعمیر کنندہ طبقے سے باہر تک رسائی حاصل نہیں کرسکتے ہیں۔
a.x = 20 کی قیمت
b.x = 20 کی قیمت
سنگلٹن // پیٹرن پر عمل درآمد کرنے کے لئے جاوا پروگرام ، نجی تعمیر کاروں کا استعمال کرتے ہوئے۔ درآمد java.io. * کلاس MySingleton {جامد MySingleton مثال = غیر سرکاری عوام x = 10 // کلاس نجی MySingleton () {} // فیکٹری کے طریقہ کار سے باہر صارفین تک رسائی حاصل نہیں کی جاسکتی ہے تاکہ صارفین کو جامد عوامی MySingleton فراہم کی جا to۔ getInstance () {if (مثال == null) مثال = new MySingleton () ਵਾਪਸੀ کی مثال}} // ڈرائیور کلاس کلاس مین {پبلک جامد باطل مین (سٹرنگ آرگز []) {مائی سنگلٹن a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('ax of =' + ax +) System.out.println ('bx =' + bx کی قدر)}
جاوا میں نجی تعمیراتی اثر
نجی تعمیر کنندہ دوسرے کلاس سے اخذ کلاسوں تک رسائی حاصل نہیں کرسکتے ہیں۔ اس طرح ، ہمیں ایک عوامی فنکشن دینا پڑتا ہے ، جس کو نجی کنسٹرکٹر کہتے ہیں۔ اس صورت میں ، شے ابتداء نہیں کی گئی ہے ، یا ہمیں اس چیز کو مثال کے طور پر واپس بھیجنا ہے اگر اس کی ابتدا کی گئی ہو۔ یہ خاص طور پر اشیاء کے لئے بہت مفید ہے ، جس کی شروعات نہیں کی جاسکتی ہے۔ ایک نجی تعمیر کنندہ درج ذیل معاملات میں استعمال ہوتا ہے۔
.innerhtml کیا کرتا ہے
- متعلقہ کلاسز ، جن میں صرف مستحکم طریقے اور ممبر ہیں۔
- مخصوص کلاسز ، جنہوں نے صرف جامد حتمی ممبروں (مستقل) کا استعمال کیا ہے۔
- سنگلز کو شامل کرنا۔
- فیکٹری کے طریقوں کو شامل کرنا۔
گنتی ، جو قسم محفوظ ہیں استعمال کرنے کے لئے۔
اندرونی کنسٹرکٹر زنجیر
اندرونی کنسٹرکٹر زنجیر بندی وہ ہوتی ہے جب ایک کنسٹرکٹر اسی کلاس کے کسی دوسرے کنسٹرکٹر کو فون کرتا ہے تب اسے کنسٹرکٹر زنجیر کے طور پر بھیجا جاسکتا ہے۔ ہمارا فرض ہے کہ ہم اس کلیدی لفظ کو کلاس کے دوسرے کنسٹرکٹر کو فون کرنے کے لئے استعمال کریں۔ کچھ مثالوں میں ، یہ کلاس متغیرات کی کچھ طے شدہ اقدار کی تعریف کرنے کے لئے استعمال ہوتا ہے۔ براہ کرم یہ بات بھی ذہن میں رکھیں کہ ایک اور کنسٹرکٹر کال کوڈ بلاک میں پہلا بیان ہونا ضروری ہے۔
اس کے علاوہ ، ایسی پنکچر کالیں نہیں ہونی چاہئیں ، جو لامحدود لوپ بنائیں گی۔ آئیے اب جاوا پروگرام میں کسی ایسے کنسٹرکٹر کی زنجیروں کی زنجیر باندھ کر دیکھتے ہیں۔
پیکیج com.jorterdev.constructor پبلک کلاس ملازم {نجی INT id نجی اسٹرنگ کا نام عوامی ملازم () {یہ ('جان ڈو' ، 999) System.out.println ('ڈیفالٹ ملازم تشکیل دیا گیا')} عوامی ملازم (INT) { یہ ('جان ڈو' ، i) سسٹم آؤٹ.پریٹلن ('ملازمہ ڈیفالٹ نام کے ساتھ تخلیق کیا گیا ہے')} عوامی ملازم (سٹرنگز ، انٹ i) {اس ایڈیڈ = i this.name = s System.out.println ( 'ملازم تخلیق کردہ')} عوامی جامد باطل مرکزی (اسٹرنگ [] آرگس) {ملازم ایمپی = نیا ملازم () سسٹم آؤٹ.پریٹلن (ایمپ) ملازم ایمپ 1 = نیا ملازم (10) سسٹم آؤٹ.پریٹلن (ایمپ 1) ملازم ایمپای 2 = نیا ملازم ('پنکج' ، 20) System.out.println (emp2)} @ آورائڈ پبلک اسٹرنگ toString () {واپسی 'ID =' + id + '، نام =' + نام} عوامی INTIND () {ریٹرن ID } عوامی باطل سیٹ آئی ڈی (انٹ id). this.id = id} عوامی اسٹرنگ getName () {واپسی کا نام} عوامی باطل سیٹ نام (سٹرنگ کا نام) {this.name = name}}
سنگلٹن کلاس ڈیزائن پیٹرن
کلاس سطح کے ممبر (شوقین ابتدائی طریقہ):
پہلے ، سنگلٹن کلاس کی نجی مستحکم مثال بنائیں۔
پھر ، ایک مستحکم طریقہ لکھیں ، جو سنگلٹن کلاس کا مقصد واپس کرتا ہے ، جسے ہم نے کلاس ممبر مثال کے طور پر تشکیل دیا ہے۔
system.exit (1) جاوا
مستحکم رکن کو براہ راست مستحکم مثال تک رسائی حاصل کرنے کے لئے عوام کے بطور نشان زد کرنا ممکن ہے۔
سنگلٹن کلاس انسٹیٹیشن کے معاملے میں ایک عام جاوا کلاس سے مختلف ہے۔ عام کلاس میں ، کنسٹرکٹر استعمال ہوتا ہے لیکن سنگلٹن کلاس کے لئے ہم گیٹ انسٹینس () کا طریقہ استعمال کرتے ہیں۔
کلاس سطح کے ممبر (سست ابتدا کا طریقہ):
پہلے کسی کنسٹرکٹر کو بطور نجی کام شروع کریں۔
پھر اس سنگلٹن کلاس کی نجی جامد مثال بنائیں۔ ذہن میں رکھیں کہ اسے تیز نہ کریں۔
پھر ، ایک مستحکم طریقہ لکھیں ، جو مستحکم مثال کے ممبر کو کالعدم کے ل. چیک کرتا ہے اور اس مثال کو شروع کرتا ہے۔ آخر میں ، یہ سنگلٹن کلاس کا ایک مقصد واپس کرتا ہے۔
کلاس سطح کے ممبر (ڈبل لاک طریقہ کے ساتھ سست ابتدا):
دو دھاگے چلانے پر غور کریں جہاں دونوں بیک وقت 'اگر' بیان کے اندر آتے ہیں جبکہ مثال بالکل ہی مسترد ہے۔ جہاں ایک مثال بنانے کے لئے ایک دھاگے مطابقت پذیر بلاک میں جاتا ہے ، جبکہ دوسرا مسدود ہوتا ہے۔ چونکہ مطابقت پذیر بلاک میں پہلا تھریڈ رہتا ہے ، قطار میں تھریڈ ایک اور سنگلٹن آبجیکٹ تیار کرتا ہے۔ براہ کرم نوٹ کریں کہ جب دوسرا تھریڈ مطابقت پذیر بلاک میں داخل ہوتا ہے ، تو یہ جانچنے میں ناکام ہوجاتا ہے کہ آیا یہ مثال کالعدم ہے۔
اندرونی اندرونی طبقے (سست بوجھ طریقہ) کا استعمال:
یہاں ، یہ جاوا لینگویج نردجیکرن (JLS) پر مبنی ہے۔ جاوا ورچوئل مشین صرف مطالبہ پر مستحکم ڈیٹا ممبروں کو لوڈ کرتی ہے۔ اس طرح ، سنگلٹن کلاس JVM کے ذریعہ سب سے پہلے بوجھ اٹھاتا ہے۔ لہذا ، کلاس میں کوئی مستحکم ڈیٹا ممبر نہیں ہے
سنگلٹن کلاس ہولڈر سنگل نمبر نہیں لوڈ کرتا ہے۔ جب ہم getIntance کے طریقہ کار کی درخواست کرتے ہیں تو ، صرف یہ ہوتا ہے۔ جے ایل ایس کلاس کی ابتداء پر عمل درآمد کی ضمانت دیتا ہے۔ لوڈنگ اور انیشلائزیشن کے جامد getInstance () کے طریقہ کار پر واضح مطابقت پذیری کا انتظام۔ چونکہ ابتداء تسلسل کے ساتھ مستحکم متغیر سنگل نمبر پیدا کرتا ہے ، لہذا getInstance () کی تمام ہم آہنگی درخواستیں مطابقت پذیر اوور ہیڈ کے بغیر اسی طرح واپس آجائیں گی۔
اینومس کا استعمال کرکے
مذکورہ بالا تمام طریق کار ہر صورت میں مکمل حل نہیں ہیں۔ عکاسی کا استعمال کرکے مذکورہ بالا عملدرآمد کی متعدد مثالوں کو تخلیق کیا جاسکتا ہے۔ دونوں ہی منظرناموں میں ، ہم نجی تعمیر کار کو نظرانداز کرسکتے ہیں اور متعدد مواقع پیدا کرسکتے ہیں۔ لہذا ، ایک نیا نقطہ نظر یہ ہے کہ enums کا استعمال کرکے سنگلٹن کلاس بنائیں۔ چونکہ اینمس فیلڈ مرتب شدہ وقت کی حیثیت رکھتے ہیں ، وہ انوم کی قسم کی مثالیں ہیں۔ وہ تعمیر کیے جاتے ہیں جب پہلی بار اینوم قسم کا حوالہ دیا جاتا ہے۔
اس کے ساتھ ، ہم جاوا آرٹیکل میں پرائیویٹ کنسٹرکٹر کے اختتام پر آتے ہیں۔ مجھے امید ہے کہ آپ کو پرائیویٹ کنسٹرکٹرز کی سمجھ آگئی ہے اور یہ جاوا میں ان کا استعمال کیسے کیا جاسکتا ہے۔
چیک کریں ایڈوریکا کے ذریعہ ، ایک قابل اعتماد آن لائن سیکھنے والی کمپنی جس کی دنیا بھر میں 250،000 سے زیادہ مطمئن سیکھنے والوں کا نیٹ ورک موجود ہے۔ ایڈورکا کا جاوا J2EE اور SOA ٹریننگ اور سرٹیفیکیشن کورس طلباء اور پیشہ ور افراد کے لئے ڈیزائن کیا گیا ہے جو جاوا ڈویلپر بننا چاہتے ہیں۔ کورس آپ کو جاوا پروگرامنگ میں آغاز فراہم کرنے اور ہائبرنیٹ اینڈ اسپرنگ جیسے جاوا کے مختلف فریم ورک کے ساتھ ساتھ جاوا کے دونوں بنیادی خیالات کے ساتھ تربیت دینے کے لئے ڈیزائن کیا گیا ہے۔
چھانٹ رہا سرنی c ++
ہمارے لئے ایک سوال ہے؟ برائے کرم اس 'جاوا ٹیوٹوریل' بلاگ کے تبصرے سیکشن میں اس کا تذکرہ کریں اور ہم جلد از جلد آپ کے پاس مل جائیں گے۔