سؤال

ترتبط قليلا بي سؤال آخر:ما الفرق بين ما يلي:

private class Joe
protected class Joe
public class Joe
class Joe

مرة أخرى، الفرق بين الأخيرين هو أكثر ما يهمني.

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

المحلول

يمكن الوصول إلى الفصل العام في أي حزمة.

فئة ذات وصول افتراضي (class Joe) يكون مرئيًا فقط للفئات الأخرى في نفس الحزمة.

لا يمكن تطبيق المعدلات الخاصة والمحمية إلا على الفئات الداخلية.

تكون الفئة الخاصة مرئية فقط لفئتها المرفقة، والفئات الداخلية الأخرى في نفس الفئة المرفقة.

تكون الفئة المحمية مرئية للفئات الأخرى في نفس الحزمة، وللفئات التي تعمل على توسيع الفئة المضمنة.

نصائح أخرى

  • خاص:مرئية للطبقات الخارجية فقط
  • محمي:مرئية للطبقات الخارجية فقط
  • عام:مرئية لجميع الفئات الأخرى
  • فصل:الحزمة الخاصة، مرئية جدًا للفئات الموجودة داخل نفس الحزمة

يرى JLS لمزيد من المعلومات.

فئة ذات وصول افتراضي لا يوجد لديه أي تعديل يسبقه في الإعلان.

ال الوصول الافتراضي هو وصول على مستوى الحزمة، لأن الفئة ذات الوصول الافتراضي لا يمكن رؤيتها إلا من خلال الفئات الموجودة في نفس الحزمة.

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

package humanity;
class Person {}

package family;
import humanity.Person;
class Child extends Person {}

حاول تجميع هذين المصدرين.كما ترون، فهي في حزم مختلفة، وسوف تفشل عملية التجميع.

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