المُنشئات
مُقدَّم| English | المعنى |
|---|---|
| default constructor/dɪˈfɒlt kənˈstrʌktə/ | المُنشئ الافتراضي |
المُبدئ المعامل لا يوفر مُبدئ بدون معاملات
- يُصرّف Student مُبدئ Student(String n) فقط. إنشاء Student("Ada") جديد يعمل، لكن Student() الجديد ليس له مُبدئ مطابق.
- يوفر Java مُبدئ افتراضي ضمني فقط عندما لم يتم التصريح به. للسماح بكلا الاستدعاءين، اكتب Student() وStudent(String n) صراحةً.
إعداد كائن جديد
- يعمل المُبدئ عند إنشاء كائن مع
new، لتعيين حالته الأولية. له نفس اسم الفئة ولا نوع إرجاع (ولا حتىvoid). public Student(String n) { name = n; score = 0; }مهمته: إعطاء قيم بداية معقولة للكائن الجديد تمامًا.
معاملات المنشئ
- تتيح المعاملات لكل كائن جديد البدء بقيم خاصة به.
new Student("Ada")يعبر عن"Ada"إلى معاملnفي المُبدئ. - داخله، يقوم
name = n;بنسخ الحجة إلى متغير الحالة. كل تعبيرnewناجح ينشئ كائنًا مميزًا، حتى لو كانت حججه متطابقة. لا يشترط أن تنتج الحجج المختلفة قيم حقول مختلفة إذا تجاهل المُبدئها أو قوّمها.
إجرايان !=Student("Ada") يشيران إلى نفس الكائن لأن الحجوز متساوية.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
كل تعبير != جديد يُنشئ كائنًا مميزًا؛ ولا تجعل الحجوز المتساوية المرجعات متساوية.
تحميل منشئات متعدد
- يمكن للفئة أن تحتوي على عدة مُبدئات بقوائم معاملات مختلفة — الزيادة. كل من
Student(String n)وStudent(String n, int s)صحيحان. - يختار Java الذي تتطابق معاملاتاته مع حججك
new. هذا يوفر لطرق المكالمة طرقًا مرنة لبناء كائن.
المُنشئات تحدد الحالة الأولية
كل كائن جديد يتم تكوينه بواسطة وسائط المنشئ.
للمنشئ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
نفس اسم الكلاس، نوع إرجاع لا يوجد — حتى void.
متى يعمل المنشئ؟
Difficulty 1/5 · 100 coins + a small bonus on first completion today
new يستدعي المنشئ لبناء الكائن.
إذا لم تكتب منشئاً، يوفر Java منشئ افتراضي بلا وسائط.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
لكن كتابة أي منشئ يلغي هذا الافتراضي المجاني.
بمجرد تعريف منشئ بوسائط، لا يزال new Student() يعمل تلقائياً.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
الافتراضي المجاني قد زال؛ اكتب منشئاً بلا وسائط إذا كنت بحاجة إليه.
كتابة منشئين بوسائط مختلفة هو مثال على...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
نفس الاسم، وسائط مختلفة = إعادة التعريف (Overloading).
المنشئ الافتراضي
- إذا لم تكتب أي مُبدئ، يوفر Java مُبدئ افتراضي مخفي بدون معاملات. أولًا يكون للحقول قيم افتراضية (
0،false،null)؛ ثم يمكن للمُبدئات الصريحة للحقول تعيين قيم ابتدائية أخرى. - لكن بمجرد أن تكتب أي مُبدئ، يختفي هذا الافتراضي المجاني. لذا إذا كنت بحاجة إلى مُبدئ بدون معاملات و مُبدئ معاملة، اكتب كليهما.
المنشئ يحمل اسم الكلاس ولا نوع إرجاع — كتابة void تجعله دالة عادية، وليس منشئاً. ومرة واحدة تعرّف أي منشئ، تتوقف Java عن إعطائك الافتراضي المجاني بدون وسائط؛ إذا كنت لا تزال تريد new Student()، يجب عليك كتابة ذلك المنشئ بنفسك.
Order the steps used to evaluate new Student("Ada").
Difficulty 3/5 · 200 coins + a small bonus on first completion today
The supplied argument selects a matching constructor; declaring it does not also create a no-argument constructor.
يحتوي Counter على int value = 7; ومُعرِّف صريح يقوم لاحقًا بتعيين value = 9;. ما قيمة value فور الانتهاء من الإنشاء؟
Difficulty 2/5 · 140 coins + a small bonus on first completion today
يُعيّن مُهيئ الحقل 7 قبل أن يُعيّن جسم المُعرِّف 9.
منشئان لـ Student:
public Student(String n) { name = n; score = 0; }public Student(String n, int s) { name = n; score = s; }new Student("Ada")→ score0;new Student("Bo", 75)→ score75.
انقل الاستدلال إلى حالة جديدة
- قارن
class Counter { private int value = 7; }بفئة مطابقة آخرى بشكل عام يُعيّن مُبدئ صريح فيهاvalue = 9;. يبدأ الأول عند 7 بعد مُبدئ الحقل الخاص به؛ وينتهي الثاني البناء عند 9. - تستقبل الحقول القيم الافتراضية قبل مُبدئات الحقول وجسم المُبدئ. المُبدئ بدون معاملات الذي كتبه المبرمج ليس هو المُبدئ الافتراضي الذي يزود به المترجم، على الرغم من أن كليهما لا يأخذان معاملات.
الـ منشئ (نفس اسم الكلاس، بدون نوع إرجاع) يعمل على new لتعيين حالة كائن أولية، باستخدام المعاملات للقيم لكل كائن. يمكن للكلاس أن يحمل متعددة عدة منشئات. اكتب أي منشئ ولا تزود Java مزوداً افتراضياً بدون وسائط — لكن تعريف أي منشئ يزيل ذلك الافتراضي المجاني.