ما هو المُنشئ في Java وكيف تستخدمه؟

ما هو المُنشئ في Java وكيف تستخدمه؟

في البرمجة الموجهة للكائنات ، المُنشئ هو وظيفة خاصة تقوم باستدعائها لإنشاء كائن. يتمتع المنشئون بالعديد من الميزات الفريدة التي تمكنهم من العمل.





في Java ، تقوم بتسمية المُنشئ بعد فئته. المُنشئ هو طريقة مُعرَّفة في الفئة التي ينطبق عليها. قد تستخدم مُنشئات Java التحميل الزائد لتوفير سلوك بديل. يمكن للمُنشئين في Java أيضًا الاستفادة من الوراثة لإعادة استخدام التعليمات البرمجية.





لماذا تحتاج إلى بنائين على أي حال؟

المُنشئون هم الدعامة الأساسية للبرمجة الموجهة للكائنات ، وجافا ليست استثناء. يوضح هذا المثال كيف يمكنك تحديد فئة الدائرة الأساسية بخاصية بيانات واحدة وطريقة واحدة:





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

يمكنك بعد ذلك إنشاء مثيل لهذا الفصل والتفاعل معه:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

لكن هذا أقل ملاءمة وقوة مما يمكن أن يكون. تغليف البيانات ، وحمايتها من الوصول غير المصرح به ، من الممارسات الجيدة الموجهة للكائنات:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

الآن يمكن لرمز الاتصال استخدام مجموعة الطريقة ولا داعي للقلق بشأن تفاصيل تنفيذها:

كيفية جعل الكمبيوتر المحمول لا ينام عند إغلاقه
Circle c = new Circle();
c.setRadius(2);

يقدم المنشئون طريقة أفضل لتوفير البيانات إلى كائن عند إنشائه. غالبًا ما يتم استخدامها لتهيئة الخصائص ، مثل نصف القطر هنا.





أمثلة على البناة البسطاء

أبسط مُنشئ هو المُنشئ الذي لا يحتوي على وسيطات ، ولا يفعل شيئًا:

public class Circle {
public Circle() {}
}

أنظر أيضا: تعرف على كيفية إنشاء فصول في Java





إذا لم تحدد مُنشئًا ، فستوفر Java مُنشئًا افتراضيًا يعمل بنفس الطريقة.

لاحظ شيئين:

  1. يتطابق اسم المُنشئ مع اسم الفئة.
  2. يستخدم هذا المُنشئ الامتداد عام معدل الوصول ، لذلك يمكن لأي رمز آخر تسميته.
  3. لا يتضمن المُنشئ نوع إرجاع. على عكس الطرق الأخرى ، لا يمكن للمُنشئين إرجاع قيمة.

يقوم المنشئون عادة بنوع من التهيئة. لاحظ أن الكود أعلاه لا يقوم بتهيئة قيمة نصف القطر. في هذه الحالة ، ستقوم اللغة تلقائيًا بتعيينها إلى الصفر. يتوقع هذا الفصل أن يستخدمه المستخدم مجموعة راديوس () . لاستخدام افتراضي أكثر فائدة من 0 ، يمكنك تعيينه داخل المنشئ:

public class Circle {
public Circle() { radius = 1; }
}

الدوائر التي تم إنشاؤها باستخدام هذا الفصل ستحتوي الآن على مساحة فعلية على الأقل! لا يزال بإمكان المتصل استخدام مجموعة راديوس () لتوفير نصف قطر غير 1. ولكن يمكن أن يكون المنشئ أكثر ودية:

public class Circle {
public Circle(double r) { radius = r; }
}

يمكنك الآن إنشاء دوائر بنصف قطر محدد منذ الولادة:

هل الوصول إلى الويب العميق غير قانوني
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

هذا استخدام شائع جدًا للمُنشئين. ستستخدمها غالبًا لتهيئة المتغيرات إلى قيم المعلمات.

عامل البناء الزائد

يمكنك تحديد أكثر من مُنشئ واحد في تعريف فئة:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

هذا يعطي رمز الاستدعاء خيارًا لكيفية بناء الكائنات:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

مع دائرة أكثر تعقيدًا بقليل ، يمكنك استكشاف منشئات أكثر إثارة للاهتمام. يخزن هذا الإصدار موقعه:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

يمكنك الآن إنشاء دائرة بدون وسيطات ، أو نصف قطر واحد ، أو إحداثيات س وص على طول نصف القطر. هذا هو نفس نوع التحميل الزائد الذي تدعمه Java لأي طريقة.

تسلسل المنشئ

ماذا عن إنشاء دائرة على أساس أخرى؟ هذا من شأنه أن يمنحنا القدرة على نسخ الدوائر بسهولة. لاحظ الكتلة التالية:

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

سيعمل هذا ، لكنه يكرر بعض التعليمات البرمجية دون داع. نظرًا لأن صنف الدائرة يحتوي بالفعل على مُنشئ يتعامل مع الخصائص الفردية ، يمكنك استدعاء ذلك بدلاً من ذلك باستخدام هذه الكلمة الأساسية:

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

هذا شكل من أشكال تسلسل المُنشئ ، استدعاء مُنشئ من آخر. يستخدم رمزًا أقل ويساعد على مركزية العملية بدلاً من تكرارها.

استدعاء المنشئ الأصل

يحدث الشكل الآخر لتسلسل المُنشئ عندما يستدعي المُنشئ مُنشئًا لفئته الأصلية. يمكن أن يكون هذا صريحًا أو ضمنيًا. لاستدعاء المُنشئ الرئيسي بشكل صريح ، استخدم ممتاز الكلمة الأساسية:

super(x, y);

تخيل فئة الشكل تؤدي دور والد الدائرة:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

إنه يتعامل مع الوضع الشائع لجميع الأشكال لأن هذه هي الوظيفة التي يشتركون فيها جميعًا. الآن يمكن لفئة الدائرة تفويض التعامل مع الموقع إلى الأصل:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

البناء الفائق هو جانب مهم جدا من الميراث في جافا . اللغة تفرضه بشكل افتراضي إذا لم تتصل به بشكل صريح ممتاز في المنشئين الخاصين بك.

معدِّلات الوصول على المُنشئين

يمكن للمُنشئين تضمين مُعدِّل وصول في توقيعهم. مثل التوابع الأخرى ، يحدد هذا أنواع المتصلين التي يمكنها الوصول إلى المُنشئ:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

هذا مثال أكثر تعقيدًا ، لذا احرص على فهمه:

  • الفئة ليست مجردة ، لذلك من الممكن إنشاء مثيل لها.
  • المُنشئ خاص ، لذا فإن هذه الفئة نفسها فقط هي التي يمكنها إنشاء مثيل جديد.
  • من خلال خاصية ثابتة وطريقة ، يعرض الفصل مثيلًا واحدًا فريدًا من نوعه للمتصلين.

استخدم البناة في Java لإنشاء كائنات

المنشئون مهمون في البرمجة الشيئية. إنها تسمح لك بإنشاء كائنات ، وهو أمر ضروري!

في Java ، تبدو المنشئات مثل الطرق الأخرى وتعمل بنفس الطريقة تقريبًا. يجب أن تتذكر القواعد الخاصة حول المنشئات الافتراضية ، والتحميل الزائد ، وتسلسل المُنشئ. إذا كانت المنشئات جديدة عليك ، فقد ترغب في قراءة مفاهيم Java الأساسية الأخرى التي يجب أن تتعلمها عند البدء.

يشارك يشارك سقسقة بريد الالكتروني 10 مفاهيم Java الأساسية التي يجب أن تتعلمها عند البدء

سواء كنت تكتب واجهة مستخدم رسومية أو تطور برنامجًا من جانب الخادم أو تطبيقًا للهاتف المحمول باستخدام Android ، فإن تعلم Java ستخدمك جيدًا. فيما يلي بعض مفاهيم Java الأساسية لمساعدتك على البدء.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • جافا
  • نصائح الترميز
نبذة عن الكاتب بوبي جاك(تم نشر 58 مقالة)

بوبي متحمس للتكنولوجيا وعمل كمطور برمجيات لأكثر من عقدين من الزمن. إنه شغوف بالألعاب ، ويعمل كمحرر المراجعات في مجلة Switch Player ، وهو منغمس في جميع جوانب النشر عبر الإنترنت وتطوير الويب.

انظر من الذي ألغى متابعتك على الانستغرام
المزيد من Bobby Jack

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك