المنشئ Constructor في Java | شرح مبسّط للغاية مع أمثلة كثيرة

16:00 دقائق مجاني
شرح Constructor من الصفر: لماذا نحتاجه؟ وكيف يهيّئ الكائن عند إنشائه؟ وما الفرق بينه وبين الدوال العادية؟

في الدرس السابق أنشأنا كائنًا ثم بدأنا نضع القيم يدويًا:

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.