🔹 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 Constructor | Parameterized Constructor |
---|---|---|
التعريف | يتم إنشاؤه تلقائيًا إذا لم يتم تحديد منشئ | يتم تحديده يدويًا داخل الكلاس |
المعلمات | لا يأخذ معلمات (Parameters ) | يأخذ معلمات لتحديد القيم عند الإنشاء |
الاستخدام | يستخدم عند عدم الحاجة إلى تخصيص القيم مباشرة | يستخدم عند الحاجة إلى تحديد القيم عند الإنشاء |
🎯 خلاصة
✅ Default Constructor
يتم إنشاؤه تلقائيًا عند عدم تحديد أي منشئ.
✅ Parameterized Constructor
يسمح بتمرير القيم عند إنشاء الكائن.
✅ يمكن استخدام this
داخل المنشئ للإشارة إلى متغيرات الكلاس.