توفر لغة Java العديد من المعدلات ، مقسمة بشكل رئيسي إلى الفئتين التاليتين:
يتم استخدام المعدلات لتحديد الفئات أو الأساليب أو المتغيرات ، وعادة ما يتم وضعها في الواجهة الأمامية للبيان. دعونا نستخدم الأمثلة التالية لتوضيح:
classname classname من الفئة العامة {// ...} myflag boolean الخاص ؛ الأسابيع النهائية الثابتة = 9.5 ؛ محمية boxwidth final int static = 42 ؛ الفراغ الثابت العام (string [] وسيطات) {// method body}معدل التحكم في الوصول
في Java ، يمكن استخدام عناصر التحكم في الوصول لحماية الوصول إلى الفئات والمتغيرات والأساليب والمشاركات. يدعم Java 4 أذونات وصول مختلفة.
الافتراضي ، المعروف أيضًا باسم الافتراضي ، مرئي داخل نفس الحزمة دون استخدام أي معدلات.
خاص ، محدد مع المعدل الخاص ، مرئي في نفس الفئة.
شائع ، يحدده المعدل العام ، مرئيًا لجميع الفئات.
محمية ، محددة مع المعدل المحمي ، المرئي للفئات وجميع الفئات الفرعية داخل نفس الحزمة.
معدل الوصول الافتراضي - لا يتم استخدام كلمات رئيسية
المتغيرات والأساليب المعلنة بشكل افتراضي معدلات الوصول مرئية للفئات داخل نفس الحزمة. يتم الإعلان عن جميع المتغيرات في الواجهة ضمنيًا على أنها نهائية ثابتة عامة ، في حين أن الأساليب في الواجهة تكون عامة بشكل افتراضي.
مثال:
كما هو موضح في المثال التالي ، يمكن أن يكون إعلان المتغيرات والأساليب بدون أي معدلات.
إصدار سلسلة = "1.5.1" ؛ Boolean ProcessOrder () {return true ؛}معدّل وصول خاص - خاص
تعتبر معدلات الوصول الخاصة هي أفضل مستوى وصول صارم ، لذلك لا يمكن الوصول إلى الأساليب والمتغيرات والمشاركات المعلنة على أنها خاصة إلا من خلال الفصل الذي ينتمون إليه ، ولا يمكن إعلان الفصول والواجهات على أنها خاصة.
لا يمكن الوصول إلى المتغيرات التي تم الإعلان عنها كنوع وصول خاص إلا من خلال فئات خارجية من خلال أساليب getter العامة في الفصل.
يستخدم استخدام المعدل الخاص للوصول الخاص لإخفاء تفاصيل تنفيذ الفصل وحماية بيانات الفصل.
يستخدم الفصل التالي معدل وصول خاص:
Logger الفئة العامة {Private String Format ؛ السلسلة العامة getFormat () {return this.format ؛ } public void setFormat (تنسيق السلسلة) {this.format = format ؛ }}في المثال ، يكون متغير التنسيق في فئة المسجل هو متغير خاص ، لذلك لا يمكن للفئات الأخرى الحصول مباشرة على قيمة المتغير وتعيينه. لتمكين فئات أخرى من معالجة المتغير ، يتم تعريف طريقتين عامان: getFormat () (إرجاع قيمة التنسيق) و setFormat (سلسلة) (يضبط قيمة التنسيق)
معدل الوصول العام - عام
يمكن الوصول إلى الفئات والأساليب والمبنات والواجهات التي تم الإعلان عنها كجمهور من قبل أي فئة أخرى.
إذا تم توزيع العديد من الفئات العامة التي تصل إلى بعضها البعض في حزم مختلفة ، فأنت بحاجة إلى استيراد الحزمة التي توجد بها الفئة العامة المقابلة. نظرًا لميراث الفصل ، يمكن أن تورث جميع الأساليب العامة والمتغيرات من الفصل بواسطة فئاته الفرعية.
تستخدم الوظائف التالية التحكم في الوصول العام:
الفراغ الثابت العام الرئيسي (سلسلة [] وسيطات) {// ...}يجب تعيين طريقة () Main () لبرنامج Java على الأماكن العامة ، وإلا فلن يتمكن مترجم Java من تشغيل الفصل.
المعدل المحمي المحمي - محمي
يمكن الوصول إلى المتغيرات والأساليب والمنشآت المعلنة حسب الحماية من قبل أي فئة أخرى في نفس الحزمة ، أو عن طريق الفئات الفرعية في حزم مختلفة.
لا يمكن لمعدل الوصول المحمي تعديل الفئات والواجهات. يمكن الإعلان عن الأساليب والمتغيرات الأعضاء على أنها محمية ، ولكن لا يمكن الإعلان عن متغيرات الأعضاء وطرق الأعضاء في الواجهة على أنها محمية.
يمكن للفئات الفرعية الوصول إلى الأساليب والمتغيرات المعلنة بواسطة المعدل المحمي ، بحيث يمكنها حماية الطبقات غير ذات الصلة من استخدام هذه الأساليب والمتغيرات.
تستخدم الفئة الأصل التالية معدل الوصول المحمي ، وتؤدي الفئة الفرعية إلى زيادة التحميلات في طريقة OpenSpeaker () من الفئة الأصل.
الفئة AudiopLayer {محمية Boolean OpenSpeaker (مكبر صوت SP) {// تفاصيل التنفيذ}} class dreamingaudioplayer {boolean openspeaker (speaker sp) {// تفاصيل التنفيذ}}إذا تم الإعلان عن طريقة OpenSpeaker () على أنها خاصة ، فلن تتمكن فئات أخرى غير Audioplayer من الوصول إلى الطريقة. إذا تم الإعلان عن OpenSpeaker () علنًا ، يمكن لجميع الفئات الوصول إلى هذه الطريقة. إذا كنا نريد أن تكون الطريقة مرئية فقط لفئة فرعية من الفصل ، فإنها تقع فيها ، ثم أعلن الطريقة المحمية.
التحكم في الوصول والميراث
يرجى ملاحظة قواعد الميراث التالية:
المعدل غير الواضحة
لتنفيذ بعض الوظائف الأخرى ، توفر Java أيضًا العديد من المعدلات غير الوصول.
يتم استخدام المعدل الثابت لإنشاء طرق فئة ومتغيرات الفصل.
يتم استخدام المعدل النهائي لتعديل الفئات والأساليب والمتغيرات. لا يمكن ورث التصنيف المعدل حسب النهائي ، ولا يمكن إعادة تعريف الطريقة المعدلة بواسطة الفئة الموروثة ، والمتغير المعدل ثابت ولا يمكن تعديله.
المعدل التجريدي ، يستخدم لإنشاء فصول مجردة وطرق تجريدية.
تستخدم المعدلات المتزامنة والمتقلب بشكل أساسي لبرمجة الخيوط.
المعدل الثابت
يتم استخدام الكلمة الرئيسية الثابتة لإعلان المتغيرات الثابتة مستقلة عن الكائنات. بغض النظر عن عدد الكائنات التي يقوم بها الفصل ، فإن لديها نسخة واحدة فقط من متغيرها الثابت. وتسمى المتغيرات الثابتة أيضا متغيرات الفئة. يمكن إعلان المتغيرات المحلية كمتغيرات ثابتة.
يتم استخدام الكلمة الرئيسية الثابتة لإعلان أساليب ثابتة مستقلة عن الكائنات. لا يمكن للطرق الثابتة استخدام المتغيرات غير القاتلة للفئة. تحصل الطريقة الثابتة على البيانات من قائمة المعلمات ثم تقوم بحساب البيانات.
يمكن الوصول إلى متغيرات الفئة والأساليب مباشرة باستخدام classname.variablename و classname.methodname.
كما هو موضح في المثال التالي ، يتم استخدام المعدل الثابت لإنشاء طرق فئة ومتغيرات الفئة.
الطبقة العامة instancecounter {private static int numinstances = 0 ؛ محمي int getCount () {return numinstances ؛ } private static void addinstance () {numinstances ++ ؛ } instancecounter () {instancecounter.addinstance () ؛ } public static void main (string [] encuments) {system.out.println ("start with" + instancecounter.getCount () + "extances") ؛ لـ (int i = 0 ؛ i <500 ؛ ++ i) {new Instancecounter () ؛ } system.out.println ("create" + instancecounter.getCount () + "insances") ؛ }}يتم تشغيل الأمثلة أعلاه وتحريرها على النحو التالي:
بدأت بحالات 0
أنشأت 500 حالة
المعدل النهائي
المتغيرات النهائية:
يمكن تهيئة المتغيرات النهائية بشكل صريح ولا يمكن تهيئتها إلا مرة واحدة. الإشارات إلى الكائنات المعلنة كنهائي لا يمكن الإشارة إلى كائنات مختلفة. ولكن يمكن تغيير البيانات في الكائن النهائي. بمعنى آخر ، لا يمكن تغيير الإشارة إلى الكائن النهائي ، ولكن يمكن تغيير القيمة في الداخل.
عادة ما تستخدم المعدلات النهائية مع المعدلات الثابتة لإنشاء ثوابت الطبقة.
مثال:
اختبار الفئة العامة {Final Int Value = 10 ؛ // أدناه مثال يعلن عن وجود boxwidth نهائي ثابت عام ثابت = 6 ؛ Static Final String Title = "Manager" ؛ public void changeValue () {value = 12 ؛ // سيتم إخراج خطأ}}الطريقة النهائية
يمكن ورث الطريقة النهائية في الفصل بواسطة الفئة الفرعية ، ولكن لا يمكن تعديلها بواسطة الفئة الفرعية.
الغرض الرئيسي من إعلان الطريقة النهائية هو منع تعديل محتوى الطريقة.
كما هو موضح أدناه ، أعلن الطريقة باستخدام المعدل النهائي.
اختبار الفئة العامة {public final void changename () {// method body}}الفصل النهائي
لا يمكن مورث الفصول النهائية ، ولا يمكن لأي فئة أن يرث أي ميزات للفصول النهائية.
مثال:
اختبار الفئة النهائية العامة {// class body}المعدل التجريدي
الطبقة التجريدية:
لا يمكن استخدام الفئات المجردة لتثبيت الكائنات. الغرض الوحيد لإعلان الفصول التجريدية هو توسيع الفصل في المستقبل.
لا يمكن تعديل الفصل بواسطة الملخص والنهائي في نفس الوقت. إذا كان الفصل يحتوي على أساليب مجردة ، فيجب إعلان الفصل كطبقة مجردة ، وإلا فإن خطأ التجميع سيحدث.
يمكن أن تحتوي الفئات المجردة على طرق مجردة وطرق غير مجردة.
مثال:
Class Class Caravan {Private Double Price ؛ نموذج السلسلة الخاص ؛ سنة سلسلة خاصة ؛ المجردة العامة الفراغ gofast () ؛ // Method Method Public Abstract Void ChangeColor () ؛}طرق مجردة
الطريقة المجردة هي طريقة دون أي تنفيذ ، ويتم توفير التنفيذ المحدد للطريقة بواسطة فئة فرعية. لا يمكن الإعلان عن الأساليب المجردة على أنها نهائية وصارمة.
يجب على أي فئة فرعية ترث فئة مجردة تنفيذ جميع الأساليب المجردة لفئة الأصل ما لم تكن الفئة الفرعية أيضًا فئة مجردة.
إذا كان الفصل يحتوي على العديد من الأساليب المجردة ، فيجب إعلان الفصل كطبقة مجردة. قد لا تحتوي الفصول المجردة على طرق مجردة.
ينتهي إعلان طريقة مجردة باستخدام فاصلة فاصلة ، على سبيل المثال: عينة تجريدية عامة () ؛
مثال:
الفئة المجردة العامة الفئة superclass {التجريدية void m () ؛ // method method} الفئة الفرعية الفئة يمتد فئة Superclass {// تنفيذ طريقة تجريدية void m () {.........}}المعدل المتزامن
لا يمكن الوصول إلى الطريقة المعلنة بواسطة الكلمة الرئيسية المتزامنة إلا بواسطة مؤشر ترابط واحد في نفس الوقت. يمكن تطبيق المعدل المتزامن على أربعة معدلات وصول.
مثال:
showdetails showdetails المتواصل () {......}المعدل العابر
عندما يحتوي كائن متسلسل على متغير مثيل معدل عابر ، يتخطى جهاز Java Virtual Machine (JVM) هذا المتغير المحدد.
يتم تضمين هذا المعدل في بيان يحدد متغيرًا ويستخدم للمعالجة المسبقة لأنواع البيانات من الفئات والمتغيرات.
مثال:
الحد الأقصى العابر العابر = 55 ؛ // لن تستمر int b ؛ // سوف يستمر
تعديل متقلبة
يتم إجبار متغيرات الأعضاء المعدلة المتقلبة على إعادة قراءة قيمة متغير العضو من الذاكرة المشتركة في كل مرة يتم فيها الوصول إليها بواسطة مؤشر ترابط. علاوة على ذلك ، عندما يتغير متغير العضو ، يتم إجبار مؤشر الترابط على كتابة قيمة التغيير مرة أخرى إلى الذاكرة المشتركة. وبهذه الطريقة ، في أي لحظة ، يرى موضوعان مختلفان دائمًا نفس القيمة لمتغير عضو معين. قد يكون مرجع كائن متطاير فارغًا.
مثال:
الطبقة العامة myrunnable الأدوات runnable {private folatile boolean Active ؛ public void run () {Active = true ؛ بينما (نشط) // السطر 1 {// code}} public void stop () {Active = false ؛ // السطر 2}}بشكل عام ، يتم استدعاء طريقة Run () في مؤشر ترابط واحد ويتم استدعاء طريقة STOP () في موضوع آخر. إذا تم استخدام القيمة النشطة في السطر 1 في المخزن المؤقت ، فلن تتوقف الحلقة عند ضبط النشط في السطر 2 على خطأ.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة في دراسة أو عمل الجميع. آمل أيضًا دعم wulin.com أكثر!