لماذا يجب ألا نستخدم static محمي في java


2 Answers

إنه مستاء لأنه متناقض.

إن استخدام متغير متغير يعني ضمناً أنه سيتم استخدامه داخل الحزمة أو سيتم توريثه ضمن فئة فرعية .

جعل المتغير static يجعله عضوًا في الفصل ، مما يلغي نوايا الموروثة . هذا يترك فقط نية استخدام داخل الحزمة ، ولدينا package-private لهذا (أي تعديل).

الوضع الوحيد الذي يمكن أن أجده مفيدًا إذا كنت تعلن عن فصل دراسي يجب استخدامه لبدء تشغيل التطبيق (مثل إطلاق تطبيق JavaFX Application#launch ، وأردت فقط أن تكون قادرًا على الإطلاق من فئة فرعية. إذا فعلت ذلك ، فتأكد من الطريقة كما أنه final لعدم السماح hiding ، ولكن هذا ليس "القاعدة" ، وربما تم تنفيذه لمنع إضافة المزيد من التعقيد بإضافة طريقة جديدة لإطلاق التطبيقات.

للاطلاع على مستويات الوصول لكل معدل ، راجع ما يلي: برامج Java التعليمية - التحكم في الوصول إلى أعضاء الفئة

Question

كنت أتناول هذا السؤال هل هناك طريقة لتجاوز متغيرات الصفوف في جافا؟ كان أول تعليق مع 36 upvotes:

إذا رأيت في أي وقت protected static ، protected static بتشغيل.

يمكن لأي شخص أن يفسر لماذا هو protected static استحم استياء؟




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




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

يتجنب بعض الناس عادة استخدام protected لأسباب مختلفة ، ويعتقد البعض أنه يجب تجنب المتغيرات static غير النهائية بكل الوسائل (أنا شخصيا أتعاطف مع الأخير إلى درجة ما) ، لذلك أعتقد أن الجمع بين protected static يجب أن تبدو سيئة ^ 2 إلى أولئك الذين ينتمون إلى كلتا المجموعتين.




Related