كيفية تنفيذ المُنشئ الخاص في Java



ستزودك هذه المقالة بمعرفة مفصلة وشاملة عن المُنشئ الخاص في Java واستخدامها مع أمثلة.

المنشئون يتم استخدامها لتهيئة حالة الكائن. على غرار الطرق ، يمكن للمنشئ أيضًا الاحتفاظ بمجموعة من العبارات ، والتي لا يمكن تسميتها سوى التعليمات. في هذه المقالة ، سنناقش 'المُنشئ الخاص' بتنسيق في الترتيب التالي:

مقدمة إلى المُنشئ في Java

يتم تنفيذ المنشئين في وقت إنشاء الكائن. للحصول على فهم أفضل للمنشئ وتطبيقاته ، ما عليك سوى التفكير في المربع كفئة. من المفترض أن تحتوي فئة Box على بعض متغيرات الفئة (مثل الطول والعرض والارتفاع). ومع ذلك ، في وقت إنشاء الكائن (على سبيل المثال ، يوجد Box في ذاكرة الكمبيوتر) ، لذلك يمكن أن يوجد صندوق بدون قيمة محددة لكميات أبعاده.





من الواضح لا.

ومن ثم ، يتم تقديم المُنشئ لتعيين قيم لمتغيرات الفئة عند إنشاء الكائن. يمكن القيام بذلك صراحة بواسطة المبرمج أو بواسطة Java نفسها. عندما يتم إجراؤه بواسطة Java نفسها ، يُطلق عليه اسم المُنشئ الافتراضي.



من الضروري أن نفهم أن أي طريقة تمتلك محدد وصول يوفره المبرمج للمنشئ ، والتي تكون خاصة ، لا يمكن الوصول إليها إلا داخل الفصل نفسه.

منشئ خاص في جافا

فئة سينجلتون

من الاسم نفسه ، يمكننا أن نطلق على فئة واحدة مفردة إذا كانت تقصر عدد كائنات تلك الفئة على عنصر واحد. لا يمكن أن تحتوي الفئة على أكثر من عنصر واحد في مثل هذه الحالات. تُستخدم الفصول الفردية بشكل شامل في مفاهيم مثل الاتصال بالشبكات وقواعد البيانات. فئة Singleton هي أ فئة خاصة .



يجب أن تكون هناك طريقة أخرى لاستخراج مثيل الفئة وطريقة إرجاع لاستعادة النتيجة. يوجد أدناه توضيح مناسب لذلك. يصور الرسم التخطيطي الأول النتيجة المحتملة حيث تساوي قيمة 'a.x' 20 وقيمة 'b.x' ينتج عنها 20 أيضًا. في الكود ، بينما نحدد الطبقة الخاصة المفردة ، لا يمكن الوصول إلى صانعيها خارج الفصل.

قيمة a.x = 20

قيمة ب س = 20

// برنامج Java لتوضيح تنفيذ نمط Singleton // باستخدام أدوات إنشاء خاصة. import java.io. * class MySingleton {static MySingleton example = null public int x = 10 // لا يمكن الوصول إلى المُنشئ الخاص خارج الفئة MySingleton () {} // طريقة المصنع لتزويد المستخدمين بنماذج ثابتة عامة من MySingleton getInstance () {if (example == null) مثيل = new MySingleton () عودة مثيل}} // Driver Class 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)}}

تأثير المُنشئ الخاص في جافا

لا يمكن للمُنشئين الخاصين الوصول إلى الفئات المشتقة من فئة أخرى. وبالتالي ، علينا إعطاء وظيفة عامة ، والتي تستدعي المنشئ الخاص. في حالة عدم تهيئة الكائن ، أو يتعين علينا إعادة مثيل إلى الكائن إذا تمت تهيئته. هذا مفيد بشكل خاص للكائنات التي لا يمكن تهيئتها. يتم استخدام المُنشئ الخاص في الحالات التالية:

  • الفئات المعنية ، والتي تحتوي فقط على أساليب ثابتة وأعضاء.
  • الفئات المحددة ، والتي تستخدم على نطاق واسع فقط الأعضاء النهائية الثابتة (الثوابت).
  • لدمج الفردي.
  • لدمج أساليب المصنع.

لاستخدام التعداد الآمن من النوع.

تسلسل المنشئ الداخلي

تسلسل المُنشئ الداخلي هو عندما يستدعي المُنشئ مُنشئًا آخر من نفس الفئة ، ثم يمكن الإشارة إليه على أنه تسلسل المُنشئ. من واجبنا استخدام هذه الكلمة الأساسية لاستدعاء مُنشئ آخر للفصل. في بعض الحالات ، يتم استخدامه لتحديد بعض القيم الافتراضية لمتغيرات الفئة. يرجى أيضًا أن تضع في اعتبارك أن استدعاء المنشئ الآخر يجب أن يكون العبارة الأولى في كتلة التعليمات البرمجية.

بالإضافة إلى ذلك ، لا ينبغي أن تكون هناك استدعاءات متكررة ، والتي ستنشئ حلقة لا نهائية. دعونا الآن نلقي نظرة على مثال لسلسلة منشئ في برنامج جافا.

package com.journaldev.constructor public class الموظف {private int id private String name public Employee () {this ('John Doe'، 999) System.out.println ('Default Employee Created')} public Employee (int i) { هذا ('John Doe'، i) System.out.println ('Employee Created with Default Name')} الموظف العام (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 = موظف جديد ('Pankaj'، 20) System.out.println (emp2)}Override public String toString () {return 'ID =' + id + '، Name =' + name} public int getId () {return id } setId العامة الفارغة (معرف int) {this.id = id} public String getName () {return name} setName العامة الباطلة (اسم السلسلة) {this.name = name}}

نمط تصميم فئة Singleton

  • عضو الفصل الدراسي (طريقة التهيئة الحثيثة):

  1. أولاً ، قم بعمل مثيل ثابت خاص لفئة فردية.

  2. بعد ذلك ، اكتب عملية ثابتة ، والتي تُرجع كائن فئة فردية ، والتي أنشأناها كمثيل لعضو في الفصل.

  3. من الممكن تحديد عضو ثابت باعتباره الجمهور للوصول إلى مثيل ثابت ثابت مباشرة.

  4. تختلف فئة singleton عن فئة Java العادية من حيث إنشاء مثيل لها. في الفصل العادي ، يتم استخدام المُنشئ لكن للفصل الفردي نستخدم طريقة get Instance ().

  • عضو على مستوى الفصل (طريقة التهيئة الكسولة):

  1. أولاً ، ابدأ المنشئ باعتباره خاصًا.

  2. ثم قم بإنشاء مثيل ثابت خاص لهذه الفئة المفردة. ضع في اعتبارك عدم إنشاء مثيل لها.

    انفورماتيكا تعليمي للمبتدئين pdf
  3. بعد ذلك ، اكتب طريقة ثابتة ، والتي تتحقق من عضو المثيل الثابت من أجل القيمة الخالية وتبدأ المثيل. أخيرًا ، تقوم بإرجاع كائن من الفئة المفردة.

  • عضو الفصل (التهيئة الكسولة مع طريقة القفل المزدوج):

ضع في اعتبارك موضوعين يعملان حيث يدخل كلاهما داخل عبارة 'if' بشكل متزامن بينما يكون المثال فارغًا. حيث ينتقل أحد الخيوط إلى كتلة متزامنة لإنشاء مثيل ، بينما يتم حظر الآخر. نظرًا لأن الخيط الأول موجود في الكتلة المتزامنة ، فإن الخيط الموجود في قائمة الانتظار ينشئ كائنًا مفردًا آخر. يرجى ملاحظة أنه عندما يدخل مؤشر الترابط الثاني إلى كتلة متزامنة ، فإنه يفشل في التحقق مما إذا كان المثيل غير فارغ.

  • باستخدام فئة داخلية متداخلة (طريقة Lazy Load):

هنا ، يعتمد على مواصفات لغة Java (JLS). يقوم Java Virtual Machine بتحميل أعضاء البيانات الثابتة عند الطلب فقط. وبالتالي ، يتم تحميل فئة Singleton أولاً بواسطة JVM. وبالتالي ، لا يوجد عضو بيانات ثابت في الفصل الدراسي

لا يقوم حامل الفصل الفردي بتحميل SINGLE_INSTANCE. عندما نستدعي طريقة getIntance ، يحدث هذا فقط. يضمن JLS تنفيذ تهيئة الفئة. شرط للمزامنة الصريحة على طريقة getInstance () الثابتة للتحميل والتهيئة. نظرًا لأن التهيئة تُنشئ المتغير الثابت SINGLE_INSTANCE بطريقة متسلسلة ، فإن جميع الاستدعاءات المتزامنة لـ getInstance () ستعود بنفس الطريقة دون زيادة التزامن.

  • باستخدام Enums

ليست كل الأساليب المذكورة أعلاه حلولاً كاملة في جميع الحالات. يمكن إنشاء مثيلات متعددة من التطبيقات المذكورة أعلاه باستخدام الانعكاس. في كلا السيناريوهين ، يمكننا تجاوز المُنشئ الخاص وإنشاء مثيلات متعددة. لذلك ، هناك نهج جديد يتمثل في إنشاء فئة فردية باستخدام التعدادات. نظرًا لأن حقول التعداد عبارة عن ثوابت زمنية مجمعة ، فهي تمثل حالات من نوع التعداد الخاص بها. يتم إنشاؤها عند الإشارة إلى نوع التعداد لأول مرة.

بهذا نصل إلى نهاية مقالة المُنشئ الخاص في Java. آمل أن تكون قد حصلت على فهم للمُنشئين الخاصين وكيف يمكن استخدامها في Java.

تفحص ال من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. تم تصميم دورة تدريب وشهادة Java J2EE و SOA من Edureka للطلاب والمهنيين الذين يرغبون في أن يصبحوا مطوري Java. تم تصميم الدورة التدريبية لمنحك السبق في برمجة Java وتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & Spring.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'Java Tutorial' وسنقوم بالرد عليك في أقرب وقت ممكن.