شرح الكلمات الرئيسية الثابتة لجافا مع أمثلة

ماذا يعني ثابت؟

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

يمكن استخدام الكلمة الأساسية الثابتة مع المتغيرات والأساليب وكتل التعليمات البرمجية والفئات المتداخلة.

المتغيرات الثابتة

مثال:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } }

و COUNTسيتم تقاسم متغير من كافة الكائنات من تلك الفئة. عندما نقوم بإنشاء كائنات من فئة Counter في main ، والوصول إلى المتغير الثابت.

public class MyClass { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println(Counter.COUNT); } } // Outputs "2"

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

طرق ثابتة

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

  1. لا يمكن للطريقة الثابتة استخدام أعضاء غير ثابتة (متغيرات أو وظائف) للفئة.
  2. لا يمكن استخدام الأسلوب الثابت thisأو superالكلمات الرئيسية.

مثال:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } public static void increment(){ COUNT++; } }

يمكن أيضًا استدعاء الطرق الثابتة من مثيل الفئة.

public class MyClass { public static void main(String[] args) { Counter.increment(); Counter.increment(); System.out.println(Counter.COUNT); } } // Outputs "2"

الناتج هو 2 لأنه يتم زيادته بطريقة ثابتة increament(). على غرار المتغيرات الثابتة ، يمكن أيضًا الوصول إلى الطرق الثابتة باستخدام متغيرات الحالة.

كتل ثابتة

تُستخدم كتل التعليمات البرمجية الثابتة لتهيئة المتغيرات الثابتة. يتم تنفيذ هذه الكتل مباشرة بعد إعلان المتغيرات الثابتة.

مثال:

public class Saturn { public static final int MOON_COUNT; static { MOON_COUNT = 62; } }
public class Main { public static void main(String[] args) { System.out.println(Saturn.MOON_COUNT); } } // Outputs "62"

الناتج هو 62 ، لأن المتغير MOON_COUNTيتم تعيين هذه القيمة في الكتلة الثابتة.

فئات متداخلة ثابتة

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

مثال:

public class Outer { public Outer() { } public static class Inner { public Inner() { } } }

في المثال أعلاه ، Innerيمكن الوصول إلى الفصل مباشرة كعضو ثابت في الفصل Outer.

public class Main { public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); } }

إحدى حالات استخدام الفئات المتداخلة الثابتة في Builder Pattern المستخدمة بشكل شائع في جافا.