في Java ، كل شيء لديه شكل من أشكال التحكم في الوصول.
مستويات التحكم في أذونات الوصول هي من الأكبر إلى الحد الأدنى: أذونات الوصول العامة والمحمية والمحمية (لا كلمات رئيسية) وخاصة.
عند استخدامها ، يتم وضع معدلات الوصول إلى Java ، العامة ، المحمية والخاصة ، قبل تعريف كل عضو (مجال أو طريقة) في الفصل.
1. حقوق الوصول لأعضاء الفصل
الطريقة الوحيدة للوصول إلى عضو هي:
1). اجعل هذا العضو علنيًا. بغض النظر عن من هو ، يمكن الوصول إلى العضو ؛
2). منحة وصول الحزمة إلى الأعضاء من خلال المعدلات غير المعالجة ووضع فئات أخرى في نفس الحزمة ، يمكن للفئات الأخرى في الحزمة الوصول إلى العضو ؛
3). يمكن للفصول الموروثة الوصول إلى كل من الأعضاء العامين والأعضاء المحميين.
4). توفير أساليب ملحق وطفر لقراءة وتغيير القيم الرقمية.
1. أذونات الوصول إلى الحزمة
لا يحتوي إذن الوصول الافتراضي على أي كلمات رئيسية ، لكن تمريره يشير إلى أذونات الوصول ، مما يعني أن جميع الفئات الأخرى في التقرير الحالي يمكنها الوصول إلى هذا العضو ، ولكن بالنسبة لجميع الفئات خارج هذه الحزمة ، يكون هذا العضو خاصًا بالفعل.
يجمع الوصول إلى الحزمة بين جميع الفئات ذات الصلة داخل الحزمة حتى يتمكنوا من التفاعل بسهولة مع بعضها البعض.
ملاحظة: إذا كانت الفئتان في نفس الدليل ولم يتم تعيين أي اسم حزمة لأنفسهم ، فسوف تنظر Java تلقائيًا في هذه الملفات باعتبارها الحزمة الافتراضية المرتبطة بالدليل ، لذلك يمكن لهذه الملفات الوصول إلى الحزمة إلى بعضها البعض.
يوضح المثال التالي هذه المشكلة:
// Class Cake and Pie في نفس الدليل ولا يتم عرضه بشكل صريح في أي فئة حزمة فئة {void f () {system.out.println ("pie.f ()") ؛ }} class cake {public static void main (string [] args) {pie x = new pie () ؛ xf () ؛ }} // الإخراج هو pie.f ()2.Public: أذونات الوصول إلى الواجهة
يعني استخدام الكلمة الرئيسية العامة أن إعلانات الأعضاء اللاحقة متاحة للجميع ، وخاصة مبرمجي العملاء الذين يستخدمون مكتبات الفصل.
3. خاصة: لا يمكنك الوصول إليه
تشير الكلمة الرئيسية الخاصة إلى أنه لا يوجد فئة أخرى غير الفئة التي تحتوي على العضو لا يمكنها الوصول إلى العضو. لا يمكن للفصول الأخرى في نفس الحزمة الوصول إلى الأعضاء الخاصين في هذه الفئة ، لذلك يعادل هذا عزل نفسك.
تحتوي هذه الوظيفة للكلمة الرئيسية الخاصة على العديد من الاستخدامات ، مثل التحكم في كيفية إنشاء الكائنات ومنع الآخرين من الوصول مباشرة إلى مُنشئ معين (أو جميع المنشئات). ينظر
المثال التالي:
Class Sundae {Private Sundae () {} Static Sundae MakeAsundae () {return new Sundae () ؛ }} الفئة العامة iCecream {public static void main (string [] args) {sundae x = sundae.makeasundae () ؛ }}في هذا المثال ، يمكننا إنشاء كائنات مثلجات عن طريق استدعاء طريقة makeasundae () ، لكن لا يمكننا إنشاءها من خلال المنشئ.
وهذا ينطبق أيضًا على الحقول الخاصة في الفصل.
ومع ذلك ، هناك شيء واحد يجب ملاحظة أنه لا يمكنك التفكير في أن الكائنات الأخرى لا يمكن أن يكون لها إشارات عامة إلى الكائن لمجرد أن الإشارة إلى كائن في الفصل خاص.
4. محمي: وراثة أذونات الوصول
إذا تم إنشاء حزمة جديدة ورث الفصل من حزمة أخرى ، فإن العضو الوحيد الذي يمكن الوصول إليه هو العضو العام في الحزمة المصدر.
في بعض الأحيان ، يريد منشئ الفئة الأساسية تعيين الوصول إلى عضو معين إلى الفئة المشتقة بدلاً من جميع الفئات ، والتي تتطلب الكلمة الرئيسية المحمية.
لاحظ أن المحمية التي توفر أيضًا الوصول إلى الحزمة ، أي فئات أخرى داخل الحزمة نفسها يمكنها أيضًا الوصول إلى عناصر محمية في هذه الفئة.
2. الواجهة والتنفيذ
غالبًا ما يشار إلى السيطرة على حقوق الوصول على أنها مخفية في التطبيقات الخرسانية.
غالبًا ما يطلق على بيانات التعبئة والتغليف في الفئات ، وغالبًا ما يطلق على التطبيقات المحددة بشكل جماعي التغليف.
لسببين مهمين ، يكمن التحكم في إذن الوصول حدود الأذونات داخل نوع البيانات:
1. قم بتعيين الحدود التي يمكن لمبرمجي العميل استخدامها ولا يمكنهم استخدامها. يمكنك إنشاء آلية داخلية خاصة بك في الهيكل ، دون القلق من أن مبرمجي العملاء سيتعاملون بطريق الخطأ في الآلية الداخلية كجزء من الواجهة التي يستخدمونها.
2. افصل الواجهة والتنفيذ المحدد.
3. أذونات الوصول إلى الفصل
في Java ، يمكن أيضًا استخدام معدلات الوصول لتحديد الفئات في المكتبة المتاحة لمستخدم المكتبة.
يجب وضع المعدلات قبل فئة الكلمات الرئيسية. على سبيل المثال:
عنصر واجهة المستخدم الفئة العامة {......} أو
تحسين الوصول.
يجب أن تعلم أنه لا يمكن أن يكون الفصل خاصًا (إذا كان الفصل خاصًا ، فلن يتمكن أي فصل آخر من الوصول إليه باستثناء الفصل) ، ولا يمكن حمايته (في الواقع ، يمكن أن تكون فئة داخلية خاصة أو محمية ، ولكن هذه حالة خاصة ، كما هو موضح في المقالات اللاحقة) ، ولا يمكن أن تكون سوى أذونات الوصول إلى الحزمة أو الجمهور.
إذا كنت لا تريد أن يصل الآخرون إلى الفصل ، فيمكنك تحديد جميع مُنشئين الفصل على أنهم خاصون ، مما يمنع أي شخص من إنشاء كائنات من الفصل. ولكن هناك استثناءات لهذا ، والتي لا يمكن أن تمنعك من إنشاء الفصل داخل العضو الثابت في الفصل. دعونا نلقي نظرة على المثال التالي:
class soup1 {private soup1 () {} soup1 static soup1 () {// قم بإنشاء كائن باستخدام طريقة ثابتة لإرجاع Soup1 () ؛ }} class soup2 {private soup2 () {} soup2 static soup2 ps1 = new soup2 () ؛ // إنشاء كائن باستخدام Singleton Mode Public Static Soup2 Access () {return ps1 ؛ } public void f () {}} غداء الفئة العامة {void testPrivate () {// soup1 soup = new Soup1 ؛ لا يمكن تنفيذها} testsingleton () {soup2.Access (). f () ؛ }}يمكننا أن نرى أن مُنشئي Soup1 و Soup2 خاصة ، ولا يمكن لأحد استخدام المنشئ مباشرة لإنشاء كائنات من هذه الفئة. ولكن يمكننا أيضًا استخدام هاتين الفئتين: إنشاء طريقة ثابتة في Soup1 ، واستخدام المنشئ لإنشاء كائن Soup1 وإعادة مرجعه ؛ يستخدم إنشاء Soup2 نمط Singleton في نمط التصميم ، ويمكنه إنشاء أحد كائناته فقط. يتم إنشاء هدف فئة Soup2 كعضو خاص ثابت في Soup2 ، لذلك لا يوجد سوى واحد ، ولا يمكن الوصول إليه ما لم يتم الوصول إليه من خلال الطريقة العامة.
بالإضافة إلى ذلك ، تجدر الإشارة إلى بعض القيود:
1. يمكن أن يكون لكل وحدة تجميع فئة عامة واحدة فقط.
2. يجب أن يتطابق اسم الفئة العامة مع اسم الملف الذي يحتوي على وحدة التجميع ، بما في ذلك الحالة العلوية والسفلية.
3. إذا لم يكن هناك فئة عامة في وحدة التجميع ، فيمكنك تسمية الملف حسب الرغبة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.