سؤال

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

هل هذا يعني أنه لا يمكن إعلان حقل يمكن الوصول إليه من الفئات الموروثة فقط وليس فئات أخرى غير محددة في نفس الحزمة؟

أقدر أن هناك طرقًا للتغلب على هذا ، لكن هل هناك حالات تريد أن تحصل عليها هذا النوع من السلوك؟

من الواضح أن السؤال أعلاه ينطبق على الأساليب وكذلك الحقول.

شكرا جزيلا.

هل كانت مفيدة؟

المحلول

نرى: http://java.sun.com/docs/books/tutorial/java/javaoo/accesscontrol.html
Package> فئات فرعية ، لا يمكنك أبدًا الحصول على حقل مرئي فقط بواسطة الفئات الفرعية ولكن ليس بواسطة فئات من نفس الحزمة.

نصائح أخرى

أساسًا:

  • خاص: يمكن الوصول إليه فقط بواسطة الفصل.
  • الجمهور: يمكن الوصول إليه من قبل أي فصل.
  • محمية: يمكن الوصول إليها من قبل الفصل ، وجميع الفئات الموروثة وفئات الحزمة الحالية (تم تحريره).
  • لا يوجد نطاق محدد: يمكن الوصول إليه بواسطة جميع فئات الحزمة الحالية.

معلومات اكثر هنا.

نعم ، وصول جافا المحمي أمر غريب بعض الشيء بهذه الطريقة. لا أستطيع أن أرى على الفور لماذا من المرغوب فيه على الإطلاق. شخصيا لا يزعجني مجالات بما أنني لا أحب الحقول غير الخاصة على أي حال (بخلاف الثوابت) ولكن الشيء نفسه ينطبق على الأعضاء الآخرين.

.NET ليس لديه مفهوم وصول المساحة/مساحة الاسم على الإطلاق ، ولكن لديه بديل هو التجميع (فكر في "ملف جرة" - ليس هو نفسه تمامًا ، ولكنه يغلق). بصراحة أود الحصول على مساحة اسم و خيارات الرؤية وحدة النشر ، لكن يبدو أنني محكوم عليه بخيبة أمل ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top