عند النظر إلى الشيفرة المقدمة، يظهر أنك تواجه تحديًا في الوصول إلى كائن غير ثابت من داخل طريقة ثابتة والعكس في لغة البرمجة جافا. هذا مشكلة شائعة تظهر عندما تحاول الوصول إلى متغير غير ثابت أو طريقة من داخل طريقة ثابتة. لفهم كيفية التغلب على هذا التحدي، يجب عليك فهم الفارق بين الأعضاء الثابتة وغير الثابتة في البرمجة بلغة جافا.
في الكلاس “Class1.java”، لدينا متغير num
الذي هو غير ثابت وينتمي إلى كائن من الكلاس. ولكن المشكلة تكمن في محاولة الوصول إليه من داخل طريقة Main
، والتي هي طريقة ثابتة. يجب أن تكون الخطوة الأولى هي جعل num
ثابتًا لتتيح للدوال الثابتة الوصول إليه. يمكن فعل ذلك بإضافة كلمة المفتاح static
إلى تعريف num
كما يلي:
javastatic int num = 3 + 2;
الآن، بمجرد أن يصبح num
ثابتًا، يمكنك الوصول إليه من داخل الدوال الثابتة بدون مشاكل.
أما بالنسبة للكلاس “Class2.java”، يجب عليك إجراء بعض التغييرات. يجب أن تكون الدالة Main2
ثابتة أيضًا لتمكين الوصول إلى num
الذي أصبح الآن ثابتًا. لذا يجب تعديل الكود كما يلي:
javaclass Class2 {
public static void Main2() {
System.out.println(Class1.num);
}
}
بتلك التغييرات، يمكنك الآن استدعاء الدالة الثابتة Main2
من داخل الدالة الثابتة Main
دون أية مشاكل. يتيح لك هذا الإجراء الوصول إلى الأعضاء الثابتة من داخل الأعضاء الثابتة والعكس.
المزيد من المعلومات
بالطبع، دعنا نوسّع المحادثة لفهم أعمق حول مفهوم الأعضاء الثابتة وغير الثابتة في لغة البرمجة جافا.
عندما نقول أن العناصر (المتغيرات أو الدوال) في البرمجة بجافا هي “ثابتة” أو “غير ثابتة”، فإننا نشير إلى خاصية تكوينها بوصفها جزءًا من الكائن (Object) أو بوصفها جزءًا من الكلاس نفسه.
-
الأعضاء الثابتة (Static Members):
- عناصر تنتمي إلى الكلاس نفسه بدلاً من كائن محدد.
- يتم مشاركتها بين جميع الكائنات من نفس الكلاس.
- يتم الوصول إليها باستخدام اسم الكلاس متبوعًا بفاصلة والاسم.
- يمكنها الوصول إلى العناصر الثابتة الأخرى بشكل مباشر.
-
الأعضاء غير الثابتة (Instance Members):
- عناصر تنتمي إلى كائن محدد من الكلاس.
- يتم إنشاؤها عند إنشاء الكائنات وتختلف قيمها من كائن إلى آخر.
- يتم الوصول إليها باستخدام اسم الكائن متبوعًا بنقطة والاسم.
- لا يمكن للعناصر غير الثابتة الوصول إلى العناصر الثابتة مباشرة.
-
كلمة المفتاح
static
:- يتم استخدامها لتحديد العناصر الثابتة.
- تجعل العناصر مشتركة بين جميع الكائنات ولا تحتاج إلى إنشاء كائن للوصول إليها.
- يمكن استخدام العناصر الثابتة من داخل الدوال الثابتة بدون الحاجة إلى إنشاء كائن.
تجنب الوصول من داخل دالة ثابتة إلى عنصر غير ثابت يعود إلى الفلسفة الأساسية للبرمجة الكائنية حيث أن الدوال الثابتة تستخدم للأنشطة التي تكون مستقلة عن حالة معينة، بينما يتم استخدام الدوال غير الثابتة للتعامل مع خصائص الكائن الفريد.
من خلال فهم هذه النقاط، يمكنك بناء برامج جافا فعّالة وفهم كيفية تحقيق التفاعل بين الأعضاء الثابتة وغير الثابتة بشكل صحيح.