التعليقات

الحقول الثابتة في جاوة

الحقول الثابتة في جاوة

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

ثابت معدل

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

عنصر فئة عامة

سلسلة اسم البند الخاص ؛

عنصر عام (سلسلة اسم العنصر)

  {

this.itemName = itemName؛

  }

سلسلة getItemName العامة ()

  {

إرجاع itemName ؛

  }

}

لتتمكن من استخدام طريقة getItemName () ، يجب أولاً إنشاء كائن عنصر ، وفي هذه الحالة ، catFood:

فئة عامة StaticExample {

ثابت الفراغ الرئيسي العام (سلسلة الحجج) {

البند catFood = عنصر جديد ("Whiskas") ؛

System.out.println (catFood.getItemName ())؛

  }

}

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

عامة ثابتة باطل الرئيسية (سلسلة الأرجوحة) {

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

فئة عامة StaticExample {

ثابت الفراغ الرئيسي العام (سلسلة الحجج) {

String s = {"random"، "string"}؛

StaticExample.main (ق)؛

    }

}

ليست مفيدة للغاية ، ولكن لاحظ كيف يمكن استدعاء الأسلوب main () دون مثيل لفئة StaticExample.

ما هو مجال ثابت؟

تُعرف الحقول الثابتة أيضًا بحقول الفصل. إنها ببساطة حقول لها معدل ثابت في إعلاناتها. على سبيل المثال ، دعنا نعود إلى فئة العنصر وإضافة حقل ثابت:

عنصر فئة عامة

// الحقل الثابت uniqueId

ثابت ثابت خاص فريد = 1؛

item int الخاص ؛

سلسلة اسم البند الخاص ؛

عنصر عام (سلسلة اسم العنصر)

  {

this.itemName = itemName؛

itemId = uniqueId؛

uniqueId ++؛

  }

}

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

ومع ذلك ، يحتوي الحقل الثابت الفريد من نوعه على قيمة ستكون هي نفسها في جميع كائنات العناصر. إذا كان هناك 100 عنصر عنصر ، فسيكون هناك 100 مثيل لحقل itemId و itemName ، ولكن هناك حقل ثابت فريد واحد فقط.

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

ما هو ثابت ثابت؟

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

عنصر فئة عامة

معرّف int ثابت ثابت = 1؛

ثابت النهائي النهائي العام maxItemNameLength = 20؛

item int الخاص ؛

سلسلة اسم البند الخاص ؛

عنصر عام (سلسلة اسم العنصر)

  {

if (itemName.length ()> maxItemNameLength)

    {

this.itemName = itemName.substring (0،20)؛

    }

آخر

    {

this.itemName = itemName؛

    }

itemId = id ؛

معرف ++؛

  } }

كما هو الحال مع الحقول الثابتة ، ترتبط الثوابت الساكنة بالفئة بدلاً من كائن فردي:

فئة عامة StaticExample {

ثابت الفراغ الرئيسي العام (سلسلة الحجج) {

البند catFood = عنصر جديد ("Whiskas") ؛

System.out.println (catFood.getItemName ())؛

System.out.println (Item.maxItemNameLength)؛

    }

}

هناك شيئان مهمان يجب ملاحظتهما حول ثابت ثابت maxItemNameLength:

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

يمكن رؤية ثوابت ثابتة في واجهة برمجة تطبيقات Java. على سبيل المثال ، تحتوي فئة مجمّع عدد صحيح على اثنين يخزنان الحد الأقصى والحد الأدنى للقيم التي يمكن أن يحتوي عليها نوع البيانات int:

System.out.println ("القيمة القصوى لـ int هي:" + Integer.MAX_VALUE)؛

System.out.println ("قيمة min لـ int هي:" + Integer.MIN_VALUE)؛

انتاج:

القيمة القصوى لـ int هي: 2147483647

القيمة الدنيا لـ int هي: -2147483648