البرمجة

تفسير ظاهرة تنفيذ كود الفئة الفرعية في Java

عند دراسة الشيفرة التي قدمتها، يظهر وجود تفاعل غير متوقع يتعلق بتنفيذ الكود الثابت في الفئة الفرعية Sub. لفهم هذا السلوك الغريب، يجب النظر في كيفية تفاعل الشيفرة في بيئة Java.

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

عند تشغيل البرنامج، يتم تنفيذ الكود الثابت في الفئة الأم (SuperClass) أولاً. لذلك ترى “super” كإخراج أولي. ثم، عندما يتم تحميل الفئة الفرعية (Sub)، يتم تنفيذ الكود الثابت فيها، مما يؤدي إلى ظهور “sub” كجزء من الإخراج.

لكن هنا يأتي السؤال: لماذا يتم تنفيذ الكود الثابت في الفئة الفرعية عندما يتم إنشاء كائن من الفئة الأم؟

الإجابة تكمن في العلاقة بين الفئة الفرعية والفئة الأم. عندما يتم تحميل الفئة الفرعية، سواء تم إنشاء كائن منها أم لا، يتم تنفيذ الكود الثابت في الفئة الفرعية. هذا يحدث لأن الفئة الفرعية هي جزء من تعليمة new SuperClass() في الطريقة main.

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

باختصار، يحدث تنفيذ الكود الثابت في الفئة الفرعية لأنها جزء من تحميل الفئة الأم.

المزيد من المعلومات

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

مفهوم الـ Static في Java:

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

تسلسل تنفيذ الكود في Java:

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

التأثير على الفئات الفرعية:

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

تجنب تنفيذ الكود الثابت:

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

استنتاج:

فهم تفاعل الشيفرة يعتمد على فهم تفاصيل اللغة والمفاهيم المتعلقة بها. Java تعتبر لغة قائمة على الكائنات وتتميز بسلوك معين عند تحميل الفئات وتنفيذ الكود الثابت والدينامي. بفهم هذه المفاهيم، يمكن للمطور تحسين تصميمه وفهم سبب تنفيذ الشيفرة بالطريقة التي تمت.

زر الذهاب إلى الأعلى