سؤال

حتى لقد جعل فئة أخرى يوم المستخدمة الكسوف طريقة لإنشاء يساوي الأسلوب عندما أدركت أنها ولدت التالية العمل كود:

class Test {
  private int privateInt;
  [...]
  public boolean equals(Object obj) {
    [...]
    Test t = (Test) obj;
    if ( t.privateInt == privateInt ) {
    [...]
  }
}

t.privateInt..????إنه من المفترض أن تكون خاصة!لذا أعتقد أن هناك أكثر من مجال الرؤية أخرى من القطاع الخاص, محمية, حزمة المحمية والعامة.

ماذا يحدث هنا ؟ كيف هو هذا يسمى ؟ حيث يقوم شخص استخدام هذا ؟ لا كسر هذا التغليف?ما إذا كانت فئة لم mutator و غيرت هذا ؟ هل هذا يحدث C++ ؟ هل هذا OO المصطلح ؟ إن لم يكن, ثم لماذا جافا تفعل ذلك ؟

عموما أين يمكنني العثور على معلومات حول هذا ؟

شكرا لك.

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

المحلول

يمكن الوصول إليها من حالات مختلفة من نفس الفئة.

وفقا هذه الصفحة (قدرة لي):

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

لوضوح سأعيد كتابة هذا السطر:

if ( t.privateInt == this.privateInt )

يمكننا أن نتفق على أن "هذا.privateInt" ينبغي أن يسمح:أنت الوصول إليه من داخل مثيل من فئة الاختبار أن الرسالة "يساوي" تم إرسالها إلى.

فمن غير الواضح أن "تي.privateInt" يجب أن تكون مرئية, لأن t هو نسخة منفصلة من اختبار الدرجة ونحن لا المنفذة داخل يساوي الأسلوب.ومع ذلك جافا يسمح هذا لأن كل الكائنات (t وهذا) هي من نفس الفئة الاختبار يمكن أن نرى بعضنا البعض من القطاع الخاص أعضاء.

نصائح أخرى

مايك تماما صحيحة ؛ كنت مربكة الكائنات (حالات فئة) مع الدرجة نفسها.أعضاء خاصة إلى الدرجة, وليس أي سبيل المثال من الطبقة.

أنا أتذكر تماما كما فاجأ عن هذا عندما كنت جديدا على جافا.

ويتم الرجوع إليها من داخل نفس الطبقة.وهكذا كنت تعرف ما تقومون به و لا تحتاج إلى أن تكون محمية من نفسك.

سبب واحد كبير أن الوصول إلى أعضاء من القطاع الخاص من حالات أخرى مسموح به هو تصريح "نسخ" وظائف-أنها جدا على خلاف ذلك.أيضا, إذا كنت لم تسمح وصول حالات أخرى ، ما من شأنه أن يسمح ثابت الأساليب ؟

خاصة المتغيرات مثيل آخر من نفس الفئة يمكن الوصول إليها.هذا هو لأنك تتعامل مع تنفيذ الفصل مباشرة ، مما يتطلب منك أن تعرف عن الداخلية, 'الخاصة' المتغيرات على أي حال.

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

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