في البرمجة الموجهة للكائنات ، المُنشئ هو وظيفة خاصة تقوم باستدعائها لإنشاء كائن. يتمتع المنشئون بالعديد من الميزات الفريدة التي تمكنهم من العمل.
في Java ، تقوم بتسمية المُنشئ بعد فئته. المُنشئ هو طريقة مُعرَّفة في الفئة التي ينطبق عليها. قد تستخدم مُنشئات Java التحميل الزائد لتوفير سلوك بديل. يمكن للمُنشئين في Java أيضًا الاستفادة من الوراثة لإعادة استخدام التعليمات البرمجية.
لماذا تحتاج إلى بنائين على أي حال؟
البناة هم الدعامة الأساسية لـ البرمجة الشيئية، وجافا ليست استثناء. يوضح هذا المثال كيف يمكنك تحديد فئة الدائرة الأساسية بخاصية بيانات واحدة وطريقة واحدة:
دائرة الطبقة العامة {
نصف قطر مزدوج عام
المنطقة المزدوجة العامة () {return 3.14159 * radius * radius؛ }
}
يمكنك بعد ذلك إنشاء مثيل لهذا الفصل والتفاعل معه:
الدائرة ج = دائرة جديدة () ؛
ج. نصف القطر = 2 ؛
System.out.println (c.area ()) ؛ // 12.56636
لكن هذا أقل ملاءمة وقوة مما يمكن أن يكون. تغليف البيانات ، وحمايتها من الوصول غير المصرح به ، من الممارسات الجيدة الموجهة للكائنات:
دائرة الطبقة العامة {
نشر نصف قطر مزدوج
المنطقة المزدوجة العامة () {return 3.14159 * radius * radius؛ }
مجموعة الفراغ العامة راديوس (ص مزدوج) {نصف القطر = ص ؛ }
}
الآن يمكن لرمز الاتصال استخدام مجموعة الطريقة ولا داعي للقلق بشأن تفاصيل تنفيذها:
الدائرة ج = دائرة جديدة () ؛
ج.setRadius (2) ؛
يقدم المنشئون طريقة أفضل لتوفير البيانات إلى كائن عند إنشائه. غالبًا ما يتم استخدامها لتهيئة الخصائص ، مثل نصف القطر هنا.
أمثلة على البناة البسطاء
أبسط مُنشئ هو المُنشئ الذي لا يحتوي على وسيطات ، ولا يفعل شيئًا:
دائرة الطبقة العامة {
دائرة عامة () {}
}
أنظر أيضا: تعرف على كيفية إنشاء فصول في Java
إذا لم تحدد مُنشئًا ، فستوفر Java مُنشئًا افتراضيًا يعمل بنفس الطريقة.
لاحظ شيئين:
- يتطابق اسم المُنشئ مع اسم الفئة.
- يستخدم هذا المُنشئ الامتداد عام معدل الوصول ، لذلك يمكن لأي رمز آخر تسميته.
- لا يتضمن المُنشئ نوع إرجاع. على عكس الطرق الأخرى ، لا يمكن للمُنشئين إرجاع قيمة.
يقوم المنشئون عادة بنوع من التهيئة. لاحظ أن الكود أعلاه لا يقوم بتهيئة قيمة نصف القطر. في هذه الحالة ، ستقوم اللغة تلقائيًا بتعيينها إلى الصفر. يتوقع هذا الفصل أن يستخدمه المستخدم مجموعة راديوس (). لاستخدام افتراضي أكثر فائدة من 0 ، يمكنك تعيينه داخل المنشئ:
دائرة الطبقة العامة {
دائرة عامة () {radius = 1؛ }
}
الدوائر التي تم إنشاؤها باستخدام هذا الفصل ستحتوي الآن على مساحة فعلية على الأقل! لا يزال بإمكان المتصل استخدام مجموعة راديوس () لتوفير نصف قطر غير 1. لكن يمكن أن يكون المنشئ أكثر ودية:
دائرة الطبقة العامة {
دائرة عامة (ص مزدوج) {نصف القطر = ص ؛ }
}
يمكنك الآن إنشاء دوائر بنصف قطر محدد منذ الولادة:
الدائرة ج = الدائرة الجديدة (2) ؛
System.out.println (c.area ()) ؛ // 12.56636
هذا استخدام شائع جدًا للمُنشئين. ستستخدمها غالبًا لتهيئة المتغيرات إلى قيم المعلمات.
عامل البناء الزائد
يمكنك تحديد أكثر من مُنشئ واحد في تعريف فئة:
دائرة عامة () {radius = 1؛ }
دائرة عامة (ص مزدوج) {نصف القطر = ص ؛ }
هذا يعطي رمز الاستدعاء خيارًا لكيفية بناء الكائنات:
الدائرة ج 1 = دائرة جديدة (2) ؛
الدائرة c2 = دائرة جديدة () ؛
System.out.println (c1.area () + "،" + c2.area ()) ؛ // 12.56636, 3.14159
مع دائرة أكثر تعقيدًا بقليل ، يمكنك استكشاف منشئات أكثر إثارة للاهتمام. يخزن هذا الإصدار موقعه:
دائرة الطبقة العامة {
مزدوج العامة س ، ص ، نصف القطر؛
دائرة عامة () {radius = r؛ }
دائرة عامة (ص مزدوج) {نصف القطر = ص ؛ }
دائرة عامة (مزدوج x ، مزدوج y ، مزدوج r) {
this.x = x ؛ this.y = y ؛ نصف القطر = ص ؛
}
المنطقة المزدوجة العامة () {return 3.14159 * radius * radius؛ }
}
يمكنك الآن إنشاء دائرة بدون وسيطات ، أو نصف قطر واحد ، أو إحداثيات س وص على طول نصف القطر. هذا هو نفس نوع التحميل الزائد الذي تدعمه Java لأي طريقة.
تسلسل المنشئ
ماذا عن إنشاء دائرة على أساس أخرى؟ هذا من شأنه أن يمنحنا القدرة على نسخ الدوائر بسهولة. لاحظ الكتلة التالية:
دائرة عامة (دائرة ج) {
this.x = c.x؛
this.y = c.y ؛
this.radius = c.radius ؛
}
سيعمل هذا ، لكنه يكرر بعض التعليمات البرمجية دون داع. نظرًا لأن صنف الدائرة يحتوي بالفعل على مُنشئ يتعامل مع الخصائص الفردية ، يمكنك استدعاء ذلك بدلاً من ذلك باستخدام هذا الكلمة الأساسية:
دائرة عامة (دائرة ج) {
هذا (c.x ، c.y ، c.radius) ؛
}
هذا شكل من أشكال تسلسل المُنشئ ، استدعاء مُنشئ من آخر. يستخدم رمزًا أقل ويساعد على مركزية العملية بدلاً من تكرارها.
استدعاء المنشئ الأصل
يحدث الشكل الآخر لتسلسل المُنشئ عندما يستدعي المُنشئ مُنشئًا لفئته الأصلية. يمكن أن يكون هذا صريحًا أو ضمنيًا. لاستدعاء المُنشئ الرئيسي بشكل صريح ، استخدم ممتاز الكلمة الأساسية:
سوبر (س ، ص) ؛
تخيل فئة الشكل تؤدي دور والد الدائرة:
شكل الطبقة العامة {
مزدوج x ، y ؛
الشكل العام (_x مزدوج ، _ y مزدوج) {x = _x ؛ ص = _ ص ؛ }
}
إنه يتعامل مع الوضع الشائع لجميع الأشكال لأن هذه هي الوظيفة التي يشتركون فيها جميعًا. الآن يمكن لفئة الدائرة تفويض التعامل مع الموقع إلى الأصل:
دائرة الطبقة العامة يمتد الشكل {
نصف قطر مزدوج
دائرة عامة (مزدوجة r) {super (0 ، 0) ؛ نصف القطر = ص ؛ }
دائرة عامة (مزدوج x ، مزدوج y ، مزدوج r) {
سوبر (س ، ص) ؛
نصف القطر = ص ؛
}
}
البناء الفائق هو جانب مهم جدا من الميراث في جافا. اللغة تفرضه بشكل افتراضي إذا لم تتصل به بشكل صريح ممتاز في المنشئين الخاصين بك.
معدِّلات الوصول على المُنشئين
يمكن للمُنشئين تضمين مُعدِّل وصول في توقيعهم. مثل التوابع الأخرى ، يحدد هذا أنواع المتصلين التي يمكنها الوصول إلى المُنشئ:
اختبار الفصل العام {
اختبار ثابت خاص فريد من نوعه = اختبار جديد () ؛
اختبار خاص () {}
اختبار getInstance العام () {
عودة فريدة
}
}
هذا مثال أكثر تعقيدًا ، لذا احرص على فهمه:
- الفئة ليست مجردة ، لذلك من الممكن إنشاء مثيل لها.
- المُنشئ خاص ، لذا فإن هذه الفئة نفسها فقط هي التي يمكنها إنشاء مثيل جديد.
- من خلال خاصية ثابتة وطريقة ، يعرض الفصل مثيلًا واحدًا فريدًا من نوعه للمتصلين.
استخدم البناة في Java لإنشاء كائنات
المنشئون مهمون في البرمجة الشيئية. إنها تسمح لك بإنشاء كائنات ، وهو أمر ضروري!
في Java ، تبدو المنشئات مثل الطرق الأخرى وتعمل بنفس الطريقة تقريبًا. يجب أن تتذكر القواعد الخاصة حول المنشئات الافتراضية ، والتحميل الزائد ، وتسلسل المُنشئ. إذا كانت المنشئات جديدة عليك ، فقد ترغب في قراءة مفاهيم Java الأساسية الأخرى التي يجب أن تتعلمها عند البدء.
سواء كنت تكتب واجهة مستخدم رسومية أو تطور برنامجًا من جانب الخادم أو تطبيقًا للهاتف المحمول باستخدام Android ، فإن تعلم Java ستخدمك جيدًا. فيما يلي بعض مفاهيم Java الأساسية لمساعدتك على البدء.
اقرأ التالي
- برمجة
- جافا
- نصائح الترميز
بوبي متحمس للتكنولوجيا وعمل كمطور برمجيات لأكثر من عقدين من الزمن. إنه شغوف بالألعاب ، ويعمل كمحرر المراجعات في مجلة Switch Player ، وهو منغمس في جميع جوانب النشر عبر الإنترنت وتطوير الويب.
اشترك في نشرتنا الإخبارية
انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!
خطوة أخرى أيضا…!
يرجى تأكيد عنوان بريدك الإلكتروني في البريد الإلكتروني الذي أرسلناه لك للتو.