المنشئ Constructor في Java | شرح مبسّط للغاية مع أمثلة كثيرة
في الدرس السابق أنشأنا كائنًا ثم بدأنا نضع القيم يدويًا:
Person p1 = new Person(); p1.name = "Ahmed"; p1.age = 25;
هذا صحيح، لكنه قد يصبح مزعجًا عندما يكون لديك خصائص كثيرة. هنا يأتي دور المنشئ (Constructor).
المنشئ هو جزء داخل الكلاس يعمل تلقائيًا عند كتابة:
new Person(...)
وهدفه أن يهيّئ الكائن مباشرة بالقيم الأساسية منذ البداية.
كيف نتعرّف على Constructor؟
المنشئ يشبه الدالة، لكنه يختلف في نقطتين أساسيتين:
- اسمه يكون نفس اسم الكلاس تمامًا.
- لا يكتب نوع إرجاع (لا تكتب void ولا int).
مثال عملي: Person مع Constructor
سننشئ Constructor يستقبل الاسم والعمر عند إنشاء الكائن:
class Person {
String name;
int age;
Person(String n, int a) {
name = n;
age = a;
}
}
الآن يمكنك إنشاء شخص بهذه الطريقة مباشرة:
Person p1 = new Person("Ahmed", 25);
System.out.println(p1.name);
System.out.println(p1.age);
ماذا تعني هذه السطور داخل Constructor؟
عندما تكتب:
Person p1 = new Person("Ahmed", 25);
فإن Java تقوم تلقائيًا بالآتي:
- تنشئ كائنًا جديدًا في الذاكرة.
- تبحث عن Constructor مناسب (يقبل String و int).
- تضع القيم داخل الخصائص عبر الكود الذي كتبته في المنشئ.
وبذلك يكون الكائن جاهزًا للاستخدام فورًا.
لماذا يُعد Constructor مهمًّا للمبتدئ؟
- يجعل إنشاء الكائنات أسهل وأوضح.
- يجبرك على توفير القيم الأساسية منذ البداية.
- يقلل احتمالية نسيان تعبئة خاصية مهمة.
ملاحظة: يمكن أن يوجد أكثر من Constructor (بمدخلات مختلفة)، لكن سنؤجل ذلك للمستويات القادمة.
أخطاء شائعة وكيف تتجنبها
- كتابة نوع إرجاع للمنشئ مثل
void Person(...)(هذا خطأ). - اختلاف اسم المنشئ عن اسم الكلاس (يجب أن يتطابق تمامًا).
- تمرير عدد قيم مختلف عن المدخلات المطلوبة (سيظهر خطأ في الاستدعاء).
✅ في الدرس القادم سننتقل إلى خطوة احترافية جدًا: حماية بيانات الكائن بحيث لا يعبث بها أي جزء من البرنامج بشكل مباشر، وهذا هو Encapsulation.