JavaRush /مدونة جافا /Random-AR /سؤال وجواب: هل من الممكن تحديد الأساليب المجردة في الفصل ...

سؤال وجواب: هل من الممكن تحديد الأساليب المجردة في الفصل النهائي؟

نشرت في المجموعة
تم طرح هذا السؤال المثير للاهتمام والمهم على أحد القراء أثناء مقابلة هاتفية لوظيفة مطور Java. على الرغم من أنه كان يعلم أنه من المستحيل إنشاء فصل تجريدي finalفي لغة جافا ، إلا أنه كان مرتبكًا من صياغة السؤال. الجواب بسيط: لا، finalلا يمكن أن تكون هناك أساليب مجردة في فئة. لماذا؟ لأنه بمجرد الإعلان عن طريقة مجردة في فئة لغة Java، تصبح هذه الفئة مجردة تلقائيًا، ولا finalيمكنك إنشاء فئة مجردة في لغة Java. finalهذا يعني أنه لا يمكن أن تكون هناك طرق مجردة في فئة Java.
سؤال وجواب: هل من الممكن تحديد الأساليب المجردة في الفصل النهائي؟  - 1
يشعر العديد من مطوري Java بالحيرة عند الإجابة على هذا السؤال بسبب الصياغة. حتى لو كان الشخص الذي يطرح السؤال على دراية بالمفهوم العام، فقد لا يدرك أن الفصل، بعد الإعلان عن طريقة مجردة فيه، يصبح مجردًا، ولا يمكنك finalإنشاء فصل مجرد في Java. تفصل هذه النقطة هذا السؤال عن السؤال الأكثر شيوعًا والأكثر شيوعًا: هل من الممكن في Java الإعلان عن فئة مجردة ونهائية في نفس الوقت؟ دعونا نلقي نظرة على أحد الأمثلة على التعليمات البرمجية لتوضيح أنه finalمن غير الممكن الإعلان عن طريقة مجردة في فئة -. دعونا Hello.javaنحصل على public finalفئة تسمى Hello، والتي لديها طريقة مجردة print().
public final class Hello {
  public abstract void print();
}
اكتب هذا الرمز في IDE، وستتلقى رسالة الخطأ التالية، يقولون Helloإنها يجب أن تكون فئة مجردة حتى يمكن الإعلان عن الأساليب المجردة فيها.
سؤال وجواب: هل من الممكن تحديد الأساليب المجردة في الفصل النهائي؟  - 2
سؤال وجواب: هل من الممكن تحديد الأساليب المجردة في الفصل النهائي؟  - 3
سيحدث نفس الشيء إذا كتبت هذا الرمز في برنامج "المفكرة" وقمت بتجميعه باستخدام الأداة المساعدة javac من سطر الأوامر. وفقًا لمواصفات Java، بمجرد الإعلان عن طريقة مجردة داخل الفصل، تصبح هذه الفئة فئة مجردة، وبما أنه لا يمكنك finalإنشاء فئة مجردة في Java، فسيقوم المترجم بإنشاء خطأ. ينطبق هذا على كل من الفئات ذات المستوى الأعلى والفئات المتداخلة في لغة Java. حتى لو أعلنت عن طريقة مجردة في فئة متداخلة final، فسيكون الخطأ هو نفسه. سؤال آخر ذو صلة هو: هل يمكن للفصل المجرد في Java أن يكون له طرق ثابتة؟ الإجابة: نعم، يمكنهم ذلك، ليست هناك مشكلة في الإعلان عن طريقة ثابتة في فئة مجردة، لأنه لاستخدام طريقة ثابتة لا تحتاج إلى إنشاء مثيل للفئة، يمكن استدعاؤها ببساطة باستخدام اسم الفئة. يمكننا تعديل مثالنا ليشمل Helloتابعًا في الفصل main()، وهو ثابت في Java، كما هو موضح أدناه:
public abstract class Hello {
  public abstract void print();
  public static void main(String args[]) {
     // Howой-то code
  }
}
كما ترون، لم يتم طرح أي خطأ في الترجمة. يتم تجميع هذا الرمز دون أي مشاكل، لأنه في Java يمكنك الإعلان بأمان تام عن طريقة ثابتة في فئة مجردة. استنتاجات موجزة من المستحيل الإعلان عن طريقة مجردة في finalفئة. لأنه بمجرد القيام بذلك، يصبح الفصل تلقائيًا مجردًا، وفقًا لمواصفات Java. وبما أن final-class في Java لا يمكن أن يكون مجردًا، فهذا غير مقبول، وسيمنعك المترجم من القيام بذلك عن طريق إلقاء خطأ. ولكن يمكنك الإعلان عن أساليب ثابتة في كل من الفئات النهائية والمجردة، ولا توجد مشاكل في هذا.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION