Default Constructor

🔹 OOP في Dart: Default Constructor & Parameterized Constructor 🚀

في Dart، عند إنشاء كائن (Object) من Class، يتم استدعاء المُنشئ (Constructor) تلقائيًا. يوجد نوعان أساسيان من المُنشئات:

1️⃣ المُنشئ الافتراضي (Default Constructor)
2️⃣ المُنشئ ذو المعلمات (Parameterized Constructor)


🔹 1. المُنشئ الافتراضي (Default Constructor)

🔹 إذا لم نحدد منشئًا داخل الكلاس، فإن Dart تنشئ منشئًا افتراضيًا تلقائيًا.
🔹 هذا المنشئ لا يأخذ أي معلمات (Parameters).

📌 مثال: Default Constructor

dartنسختحريرclass Person {
  String name = "غير معروف";
  int age = 0;

  // Dart تنشئ هذا المُنشئ تلقائيًا إذا لم يتم تعريفه
  Person(); // 👈 منشئ افتراضي
}

void main() {
  Person person1 = Person(); // ✅ استدعاء المنشئ الافتراضي
  print("الاسم: ${person1.name}, العمر: ${person1.age}");
}

الناتج:

makefileنسختحريرالاسم: غير معروف, العمر: 0

🔹 التفسير:

  • Person(); هو المُنشئ الافتراضي (Default Constructor) الذي تم إنشاؤه تلقائيًا.
  • يمكننا إنشاء كائن (Object) منه دون تمرير أي معلمات.

🔹 2. المُنشئ ذو المعلمات (Parameterized Constructor)

🔹 يسمح لنا بتمرير القيم إلى الكلاس عند إنشاء الكائن.
🔹 نستخدم this لتعيين القيم إلى المتغيرات داخل الكلاس.

📌 مثال: Parameterized Constructor

dartنسختحريرclass Person {
  String name;
  int age;

  // منشئ ذو معلمات
  Person(this.name, this.age); // 👈 تمرير القيم عند الإنشاء

  void introduce() {
    print("مرحبًا، أنا $name وعمري $age سنة.");
  }
}

void main() {
  Person person1 = Person("خالد", 25);
  person1.introduce();
}

الناتج:

نسختحريرمرحبًا، أنا خالد وعمري 25 سنة.

🔹 التفسير:

  • Person(this.name, this.age); هو منشئ ذو معلمات (Parameterized Constructor).
  • عند إنشاء كائن، نمرر القيم مباشرة إلى name و age.

🔹 مقارنة بين Default Constructor و Parameterized Constructor

المقارنةDefault ConstructorParameterized Constructor
التعريفيتم إنشاؤه تلقائيًا إذا لم يتم تحديد منشئيتم تحديده يدويًا داخل الكلاس
المعلماتلا يأخذ معلمات (Parameters)يأخذ معلمات لتحديد القيم عند الإنشاء
الاستخداميستخدم عند عدم الحاجة إلى تخصيص القيم مباشرةيستخدم عند الحاجة إلى تحديد القيم عند الإنشاء

🎯 خلاصة

Default Constructor يتم إنشاؤه تلقائيًا عند عدم تحديد أي منشئ.
Parameterized Constructor يسمح بتمرير القيم عند إنشاء الكائن.
✅ يمكن استخدام this داخل المنشئ للإشارة إلى متغيرات الكلاس.