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

click fraud protection

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

المعدل الثابت

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

 عنصر الفئة العامة {

 سلسلة اسم خاص؛


 عنصر عام (String itemName)

 {

 this.itemName = itemName ؛

 }


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

 {

 إرجاع itemName ؛

 }

 } 

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

 فئة عامة StaticExample {


 public static void main (String [] args) {

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

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

 }

 } 

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

instagram viewer
 عامة ثابتة void main (String [] args) { 

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

 فئة عامة StaticExample {


 public static void main (String [] args) {


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

 StaticExample.main (s) ؛

 }

 }


ليست مفيدة جدًا ، ولكن لاحظ كيف يمكن استدعاء الطريقة الرئيسية () بدون مثيل لفئة StaticExample.

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

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

 عنصر الفئة العامة {


 // static field uniqueId

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


 بند دولي خاص ؛

 سلسلة اسم خاص؛


 عنصر عام (String itemName)

 {

 this.itemName = itemName ؛

 itemId = uniqueId ؛

 uniqueId ++ ؛

 }

 }


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

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

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

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

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

 عنصر الفئة العامة {


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

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


 بند دولي خاص ؛

 سلسلة اسم خاص؛


 عنصر عام (String itemName) 

 {

 إذا (itemName.length ()> maxItemNameLength)

 {

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

 }

 آخر

 {

 this.itemName = itemName ؛

 }

 itemId = id ؛

 معرف ++ ؛

 } } 

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

 فئة عامة StaticExample {


 public static void main (String [] args) {


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

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

 System.out.println (Item.maxItemNameLength) ؛

 }

 }


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

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

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

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

 System.out.println ("الحد الأدنى لقيمة int هو:" + Integer. MIN_VALUE) ،


 انتاج:

 الحد الأقصى لقيمة int هو: 2147483647

 الحد الأدنى لقيمة int هو -2147483648


instagram story viewer