ترتيب تحميل ملفات الفصل
1. تحميل المتغيرات الثابتة الأولى وكتل التهيئة الثابتة للفئة الأصل (يتم ترتيب أمر التنفيذ بالترتيب)
2. إعادة تحميل المتغيرات الثابتة وكتل التهيئة الثابتة التي تنفذ هذه الفئة
طالما لم يتم تدمير الفصل ، لن يتم تنفيذ المتغيرات الثابتة وكتلة التهيئة الثابتة إلا مرة واحدة ، ولن يتم تنفيذ هاتين الخطوتين في التشغيل اللاحق للفئة.
عملية إنشاء مثيل الفئة
يتم إنشاء مثيل للفصل فقط عندما يتم استدعاء الطريقة الجديدة.
1. بترتيب تحميل ملف الفئة أعلاه (تخطي هذه الخطوة إذا تم تحميل الفصل)
2. المتغيرات غير الستاطية وكتل التهيئة غير القتالية للفئة الأصل
3. طريقة بناء الفئة الأصل
4.
5. طريقة بناء هذه الفئة
4. عند تدمير مثيل الفصل ، قم أولاً بتدمير الجزء الفرعي ثم تدمير الجزء الأم.
يتم استدعاء كل من الطرق الثابتة والطرق غير المنتظمة بشكل سلبي
وهذا هو ، لن يتصل النظام وتنفيذه تلقائيًا. لذلك ، لا يقوم المستخدم بتنفيذه عندما لا يسمى. الفرق الرئيسي هو أنه يمكن استدعاء الطرق الثابتة مباشرة مع اسم الفصل (ويمكن أيضًا إجراء كائنات مثيل) ، في حين لا يمكن استدعاء الطرق غير الستاطية إلا بعد إنشاء الكائن.
المفاهيم ذات الصلة
الكلمة الرئيسية الثابتة:
هو معدل يستخدم لتعديل الأعضاء (متغيرات الأعضاء ووظائف الأعضاء)
الأعضاء المعدلين لديهم الخصائص التالية:
التحميل عند تحميل الفئة (بمجرد تحميل الفصل ، سيتم تحميل البيانات الثابتة على الفور في الذاكرة)
يختفي مع اختفاء الفصل ، مما يشير إلى أن لديه أطول دورة حياة
بشكل تفضيلي على وجود الكائن (يختفي الكائن ، لا يزال ثابتًا)
الوجود الثابت أولاً ، الكائن موجود لاحقًا
مشترك من قبل جميع الكائنات
حفظ مساحة الذاكرة
عندما يتم تعديل العضو بشكل ثابت ، بالإضافة إلى استدعاؤه بواسطة الكائن ، يمكن أيضًا استدعاؤه مباشرة بواسطة اسم الفصل.
الكتابة: اسم الفصل. عضو ثابت
ملاحظات على الاستخدام
يمكن للأساليب الثابتة الوصول فقط إلى الأعضاء الثابتة (الأساليب والمتغيرات)
يمكن أن تصل الطرق غير المنتظمة إلى كل من ثابت وغير ثابت
لا يمكن كتابة هذه الكلمات الرئيسية والكلمات الرئيسية في أساليب ثابتة
لأن الأسبقية الثابتة على الكائن ، لا يمكن أن يظهر هذا في طرق ثابتة
الوظيفة الرئيسية ثابتة
publicstaticVoidMain (سلسلة [] args) {}
متى تستخدم ثابت؟
نحتاج إلى البدء من جانبين: لأن محتوى التعديل الثابت يتضمن متغيرات ووظائف الأعضاء.
عند تحديد متغير ثابت (متغير فئة)
عندما تظهر البيانات المشتركة في الكائن ، يتم تعديل البيانات بشكل ثابت. يجب تعريف البيانات الفريدة في الكائن على أنها غير موجودة في ذاكرة الكومة.
متى تحدد وظيفة ثابتة
عندما لا يتم الوصول إلى البيانات غير المستقلة (البيانات الخاصة بالكائن) داخليًا ، يمكن تعريف الوظيفة على أنها ثابتة.
إيجابيات وسلبيات ثابتة
ربح:
1. تخزين البيانات المشتركة في مساحات منفصلة للكائنات ، وتوفير المساحة. ليست هناك حاجة لتخزين نسخة واحدة من كل كائن.
2. يمكن استدعاؤها مباشرة من قبل أسماء الفصل
عيوب:
1. دورة الحياة طويلة جدًا
2. حدوث قيود الوصول (وصول ثابت فقط)
بنية الذاكرة
عندما تعمل برامج Java ، فإنها تحتاج إلى تخصيص مساحة في الذاكرة. من أجل تحسين كفاءة الحوسبة ، تم تقسيم مجالات مختلفة من المساحة ، لأن كل منطقة لديها طريقة محددة لمعالجة البيانات وطريقة إدارة الذاكرة.
مكدس الذاكرة
تستخدم لتخزين المتغيرات المحلية عند استخدام البيانات ، سيتم إصدار المساحة المشغولة تلقائيًا.
ذاكرة كومة
يتم تخزين المصفوفات والكائنات (الكيانات) ، وهي مثيلات تم إنشاؤها عبر جديد في ذاكرة الكومة (يتم إنشاء متغيرات الأعضاء مع إنشاء الكائن والوجود في ذاكرة الكومة حيث يوجد الكائن). كل كيان له قيمة عنوان الذاكرة (يتم الرجوع إلى المتغيرات بواسطة العنوان). المتغيرات في الكيان لها قيم التهيئة الافتراضية. لم يعد هذا الكيان يستخدم وسيتم إعادة تدويره بواسطة جامع القمامة خلال فترة غير مؤكدة (آلية جمع القمامة)
منطقة الطريقة ، منطقة الطريقة المحلية ، التسجيل
يؤكد
| ترتيب التحميل | فئة الوالدين متغير ثابت = 1 | فئة الوالدين متغير غير منتظم = 1 | متغير ثابت الفئة الفرعية = 1 | متغير فئة فرعية غير طبيعية = 1 |
|---|---|---|---|---|
| [تستدعي فئة الوالدين الطريقة الثابتة للفئة الأصل] | parent.pstaticmethod () ؛ | |||
| فئة الوالدين كتلة التهيئة الثابتة واحدة | 2 | |||
| فئة الوالدين تهيئة ثابتة اثنين | 3 | |||
| طريقة ثابتة فئة الوالدين | 4 | |||
| [استدعاء الفئة الفرعية طرق ثابتة الفئة الفرعية] | child.cstaticmethod () ؛ | |||
| كتلة التهيئة الثابتة الفئة الفرعية واحدة | 5 | 2 | ||
| الفئة الفرعية التهيئة الثابتة كتلة اثنين | 6 | 3 | ||
| طرق ثابتة الفئة الفرعية | 7 | 4 | ||
| 【مثيل الفئة الفرعية】 | الطفل c = طفل جديد () ؛ | |||
| فئة الوالدين هي كتلة التهيئة غير الاستقليوية واحدة | 8 | 2 | ||
| تهيئة التهيئة غير المنتظمة فئة الوالدين اثنين | 9 | 3 | ||
| مُنشئ فئة الوالدين | 10 | 4 | ||
| كتلة تهيئة غير قاسية من الفئة الفرعية | 11 | 5 | 5 | 2 |
| كتلة التهيئة غير المنتظمة من الفئة الفرعية اثنين | 12 | 6 | 6 | 3 |
| طريقة بناء الفئة الفرعية | 13 | 7 | 7 | 4 |
| 【فئة الوالدين ، كائن الفئة الفرعية】 | الوالد p = طفل جديد () ؛ | |||
| فئة الوالدين هي كتلة التهيئة غير الاستقليوية واحدة | 14 | 2 | ||
| تهيئة التهيئة غير المنتظمة فئة الوالدين اثنين | 15 | 3 | ||
| مُنشئ فئة الوالدين | 16 | 4 | ||
| كتلة تهيئة غير قاسية من الفئة الفرعية | 17 | 5 | 8 | 2 |
| كتلة التهيئة غير المنتظمة من الفئة الفرعية اثنين | 18 | 6 | 9 | 3 |
| طريقة بناء الفئة الفرعية | 19 | 7 | 10 | 4 |
| ترتيب التحميل | فئة الوالدين متغير ثابت = 1 | فئة الوالدين متغير غير منتظم = 1 | متغير ثابت الفئة الفرعية = 1 | متغير فئة فرعية غير طبيعية = 1 |
|---|---|---|---|---|
| 【مثيل الفئة الفرعية】 | الطفل c = طفل جديد () ؛ | |||
| فئة الوالدين كتلة التهيئة الثابتة واحدة | 2 | |||
| فئة الوالدين تهيئة ثابتة اثنين | 3 | |||
| كتلة التهيئة الثابتة الفئة الفرعية واحدة | 4 | 2 | ||
| الفئة الفرعية التهيئة الثابتة كتلة اثنين | 5 | 3 | ||
| فئة الوالدين هي كتلة التهيئة غير الاستقليوية واحدة | 6 | 2 | ||
| تهيئة التهيئة غير المنتظمة فئة الوالدين اثنين | 7 | 3 | ||
| مُنشئ فئة الوالدين | 8 | 4 | ||
| كتلة تهيئة غير قاسية من الفئة الفرعية | 9 | 5 | 4 | 2 |
| كتلة التهيئة غير المنتظمة من الفئة الفرعية اثنين | 10 | 6 | 5 | 3 |
| طريقة بناء الفئة الفرعية | 11 | 7 | 6 | 4 |
| 【فئة الوالدين ، كائن الفئة الفرعية】 | الوالد p = طفل جديد () ؛ | |||
| فئة الوالدين هي كتلة التهيئة غير الاستقليوية واحدة | 12 | 2 | ||
| تهيئة التهيئة غير المنتظمة فئة الوالدين اثنين | 13 | 3 | ||
| مُنشئ فئة الوالدين | 14 | 4 | ||
| كتلة تهيئة غير قاسية من الفئة الفرعية | 15 | 5 | 7 | 2 |
| كتلة التهيئة غير المنتظمة من الفئة الفرعية اثنين | 16 | 6 | 8 | 3 |
| طريقة بناء الفئة الفرعية | 17 | 7 | 9 | 4 |
| [تستدعي فئة الوالدين الطريقة الثابتة للفئة الأصل] | parent.pstaticmethod () ؛ | |||
| طريقة ثابتة فئة الوالدين | 18 | |||
| [استدعاء الفئة الفرعية أساليب ثابتة الفئة الفرعية] | child.cstaticmethod () ؛ | |||
| طرق ثابتة الفئة الفرعية | 19 | 10 |
الطبقة العامة ClasStest {public static void main (string args []) {system.out.println ("【instantiation】 | child c = new child () ؛") ؛ الطفل c = طفل جديد () ؛ System.out.println ("【فئة Premium instantiates كائن الفئة الفرعية】 | Parent P = New Child () ؛") ؛ الوالد p = طفل جديد () ؛ System.out.println ("[Premium Class يستدعي الطريقة الثابتة للفئة الأصل] | parent.pstaticmethod () ؛") ؛ parent.pstaticmethod () ؛ System.out.println ("[[Class Subclass Subclass Static Method] | child.cstaticmethod () ؛") ؛ child.cstaticmethod () ؛ }} الفئة العامة ClasStest2 {public static void main (string args []) {system.out.println ("[regling class class parent class static method] | parent.pstaticmethod () ؛") ؛ parent.pstaticmethod () ؛ System.out.println ("[[الفئة الفرعية استدعاء الفئة الفرعية طريقة ثابتة] | child.cstaticmethod () ؛") ؛ child.cstaticmethod () ؛ System.out.println ("[instantiation من الفئة الفرعية] | الطفل C = New Child () ؛") ؛ الطفل c = طفل جديد () ؛ System.out.println ("【فئة الوالدين تقوم بتثبيت كائن فئة الطفل】 | Parent P = New Child () ؛") ؛ الوالد p = طفل جديد () ؛ }} الفئة العامة Parent {// Parent Class static static static int m = 1 ؛ // فئة الوالدين متغير غير متغير int n = 1 ؛ // عبارة static block 1 static {m ++ ؛ // j ++ ؛ لا يمكن استخدام متغير فئة الأصل غير الاستقليوية في نظام كتلة البيانات الثابتة. } // static state block 2 static {m ++ ؛ System.out.println ("كتلة التهيئة الثابتة الفئة الثابتة 2 |" + M) ؛ } // constructor public parent () {m ++ ؛ n ++ ؛ System.out.println ("مُنشئ فئة مستعدة |" + m + "|" + n) ؛ } // block block {m ++ ؛ n ++ ؛ System.out.println ("BLOCK LIGHT CLASS NON-STATICLISTY BLOCK 1 |" + M + "|" + n) ؛ } // block block {m ++ ؛ n ++ ؛ System.out.println ("ترسيخ الفئة غير المنتظمة التهيئة 2 |" + m + "|" + n) ؛ } // طريقة nonstatic public void pmethod () {m ++ ؛ n ++ ؛ system.out.println ("regling class non-static method |" + m + "|" + n) ؛ يعود؛ }. لا يمكن استخدام متغير الفئة الأصل غير الستراتية في System.out.out.println ("ترشيح الطريقة الثابتة |" + م) ؛ يعود؛ } override void finize () رمي {super.finalize () ؛ System.out.println ("تدمير الفئة الوالدية |") ؛ }} يمتد Child Class Public Parent {// متغير ثابت ثابت INT I = 1 ؛ // متغير غير ثابت int j = 1 ؛ // عبارة static block 1 static {m ++ ؛ i ++ ؛ // j ++ ؛ لا يمكن استخدام المتغيرات غير المستقلة في نظام Block static. } // static state block 2 static {m ++ ؛ i ++ ؛ System.out.println ("كتلة التهيئة الثابتة الفئة الفرعية 2" + "|" + m + "||" + i) ؛ } // constructor public Child () {m ++ ؛ n ++ ؛ i ++ ؛ J ++ ؛ System.out.println ("مُنشئ الفئة الفرعية" + "|" + m + "|" + n + "|" + i + "|" + j) ؛ } // block block {m ++ ؛ n ++ ؛ i ++ ؛ J ++ ؛ System.out.println ("كتلة التهيئة غير المنطقية من الفئة الفرعية واحدة" + "|" + m + "|" + n + "|" + i + "|" + j) ؛ } // block block {m ++ ؛ n ++ ؛ i ++ ؛ J ++ ؛ System.out.println ("تهيئة التهيئة غير المنطقية من الفئة الفرعية اثنين" + "|" + m + "|" + n + "|" + i + "|" + j) ؛ } // طريقة nonstatic public void pmethod () {m ++ ؛ n ++ ؛ i ++ ؛ J ++ ؛ System.out.println ("الفئة الفرعية ترث طرقًا غير منتظمة" + "|" + m + "|" + n + "|" + i + "|" + j) ؛ يعود؛ }. i ++ ؛ // j ++ ؛ لا يمكن استخدام المتغيرات غير المستوية في الطرق الثابتة ؛ } // طريقة nonstatic public void cmethod () {m ++ ؛ n ++ ؛ i ++ ؛ J ++ ؛ System.out.println ("طريقة غير منتظمة الفئة الفرعية" + "|" + m + "|" + n + "|" + i + "|" + j) ؛ يعود؛ }. i ++ ؛ // j ++ ؛ لا يمكن استخدام المتغيرات غير المتوقفة في نظام الأساليب الثابتة. يعود؛ } override void finize () رمي {super.finalize () ؛ System.out.println ("تدمير الفئة الفرعية |") ؛ }}لخص
ما ورد أعلاه هو كل محتوى هذه المقالة حول التحليل الشامل لعملية التحميل الفئة في Java. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة في أي وقت وسيقوم المحرر بالرد على الجميع في الوقت المناسب. نتطلع إلى تعليقاتك القيمة.