recent
أخبار ساخنة

الكونستركتور في لغة جافا 16

AM VIIP
الصفحة الرئيسية
الكونستركتور في لغة جافا

الكونستركتور constructor

دالة الكونستركتور ( Constructor ) تُسهِّل علينا طريقة إنشاء كائنات من كلاس معيَّن و تعتبر شيئ مهم يجب التفكير به بعد إنشاء الكلاس. و هو عبارة عن دالة يكون لها نوع خاص, يتم إستدعاء هذه الدالة في أثناء إنشاء الكائن من أجل توليد قيم أولية للخصائص الموجودة فيه. وهي عبارة عن دالة تحمل نفس إسم الكلاس لكن لا تعيد قيمة و يتم تنفيذها تلقائياً بمجرد إنشاء الكائن.

الشكل العام لدالة الكونستركتور في جافا

public class Con1
Con1()
{
/وضع ما نريد تنفيذ عند تشغيل البرنامج
}

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

و مثال آخر يتم إستخدام كونستركتور constructor في قواعد البيانات و برمجة الشبكات, إذا اردنا بمجرد تشغيل البرنامج يتم الإتصال مباشرتاً بقاعدة البرنامج.

مثال 1

package con23;
public class Con23 {
    Con23()
    {
        System.out.println("Hello Nusur Tech");
    }
    public static void main(String[] args) {
        Con23 cs=new Con23();
    }
}

و عند تشغيل البرنامج أو تنفيذ هذا الكود ستكون النتيجة.

Hello Nusur Tech

انشأنا كلاس Con1 ثم انشأنا constructor و أخذ نفس إسم الكلاس لأن الدالة هذه تأخذ نفس إسم الكلاس و وضعنا لها طباعة عبارة Hello Nusur Tech بمجرد تشغيل البرنامج. و في البرنامج الرئيسي إشتقينا كائن من إسم الكلاس حتى يتم تنفيذ دالة constructor. أما إذا ازلنا الكائن فلن يتم طباعة شيئ لأن هذه شروط الـ constructor أنها تعمل بمجرد إنشاء كائن.

كما أن في البرمجة الكائنية الموجهة يمكن إنشاء اكثر من دالة بناء بشرط أن تكون مختلفة بعدد الباراميترات. يعني على سبيل المثال إذا كتبنا دالة بناء اخرى سوف يعترض المفسر Compiler على الدالة. يعني هي موجودة لماذا نبنيها مرة اخرى أما إذا غيرنا عدد الباراميترات. سوف يسمح لنا بالبناء لأنها اختلفت عن الأولى.

مثال 2

package con23;
public class Con23 {
    int y;
    Con23()
    {
        System.out.println("Hello Nusur Tech");
    }
    Con23(int x)
    {
        y=x;
    }
    public static void main(String[] args) {
        Con23 cs=new Con23();
        Con23 cs1=new Con23(2);
        Con23 cs2=new Con23(3);
        System.out.println(cs1.y);
        System.out.println(cs2.y);
    }
}

تنفيذ البرنامج

Hello Nusur Tech
2
3

انشأنا متغير y و دالتين بناء الأولى هي لطباعة الجملة الترحيبية و الثانية أنشانا بها متغير y=x, ثم دخلنا للبرنامج الرئيسي انشأنا ثلاث كائنات. الأول من اجل الدالة الأولى و طباعة الجملة الترحيبية و الثاني يحمل القيمة 2 و الثالث يحمل القيمة 3. و وضعنا امر الطباعة و هو طباعة قيمة الكائن الأول cs1 و الثاني لطباعة قيمة الكائن cs2 و عند التنفيذ نفذ لنا ما طلبناه.

مثال 3

package con23;
public class Con23 {
    int y;
    double y1;
    Con23()
    {
        System.out.println("Hello Nusur Tech");
    }
    Con23(int x)
    {
        y=x;
    }
    Con23(double x)
    {
        y1=x;
    }
    pubنlic static void main(String[] args) {
        Con23 cs=new Con23();
        Con23 cs1=new Con23(2);
        Con23 cs2=new Con23(2.3);
        System.out.println(cs1.y); 
        System.out.println(cs2.y1);  
    }
}

عند التنفيذ البرنامج سنحصل على نتيجته الآتية

Hello Nusur Tech
2
2.3

لقد أنشأنا في هذا المثال متغير عددي int و هو y و متغير آخر من نوع double و هو y1 ثم أنشأنا دالة Con23. و هي int x و اوامرها y=x ثم أنشأنا دالة ثانية و كان المتغير هو double و هو y1=x. ثم دخلنا للبرنامج الرئيسي و أنشأنا ثلاث كائنات و هي الأول cs من أجل. الرسالة الترحيبية و الثاني cs1 محمل بالقيمة 2 و الثالث cs2 محمل بالقيمة 2.3. ثم قمنا بكتابة امر الطباعة الأول يطبع لنا y و امر الطباعة الثاني يطبع y1.

مثال 4

package con23;
public class Con23 {
    int y;
    double y1;
    Con23()
    {
        System.out.println("Hello Nusur Tech");
    }
    Con23(int x)
    {
        y=x;
    }
    Con23(double x)
    {
        y1=x;
    }
    Con23(double x, int x1)
    {
        y1=x+x1;
    }
    public static void main(String[] args) {
        Con23 cs=new Con23();
        Con23 cs1=new Con23(2);
        Con23 cs2=new Con23(2.3,26);
        System.out.println(cs1.y); /cs1 طباعة
        System.out.println(cs2.y1); /cs2 طباعة
    }
}

شرح هذا المثال مطابق لشرح المثال الثالث السابق لكن وضعنا بهى عملية جمع y1=x+x1 و يكون ضمن الدالة باراميترين. عند الطباعة سيكون الناتج هو

Hello Nusur Tech
2
28.3

القاعدة الأساسية عند تعريف كونستركتور هي أنه يجب أن يحمل نفس إسم الكلاس و يكون نوعه public.

google-playkhamsatmostaqltradent