الفصل النهائي
لا يمكن مورث الفصل النهائي. في الوقت نفسه ، بمجرد تعديل الفصل مع النهائي ، فهذا يعني أن جميع الطرق في الفصل النهائي محدد ضمنيًا كطرق نهائية.
الطريقة النهائية
أثناء عملية ميراث الطبقة ، لا يمكن تعديل الفئة الفرعية أو الكتابة فوقها للطريقة النهائية في الفئة الأصل.
يتم تحديد جميع الأساليب الخاصة ضمنيًا كطرق نهائية.
هناك سببان لاستخدام الطريقة النهائية:
المتغير النهائي
الكلمة الرئيسية النهائية هي الطريقة الأكثر استخدامًا لتعديل المتغيرات. إذا تم تعديل متغيرات الأعضاء ، فيجب تهيئتها في وقت التعريف أو في المنشئ ، ولا يمكن إجراء أي مهمة بعد التهيئة.
هناك معاني مختلفة للأنواع الأساسية وكائنات الفصل:
يسمى الحقل النهائي الثابتة فترة الترجمة ثابتة ويتم رسملة عمومًا.
مثال
class glyph {void draw () {system.out.println ("glyph.draw ()") ؛ } glyph () {system.out.println ("glyph () قبل draw ()") ؛ يرسم()؛ system.out.println ("glyph () بعد draw ()") ؛ }} class roundglyph يمتد glyph {private int redius = 1 ؛ RoundGlyph (int r) {radius = r ؛ System.out.println ("roundglyph.rondglyph () ، radius =" + radius) ؛ } void draw () {system.out.println ("roundglyph.draw () ، radius =" + radius) ؛ }} الفئة العامة rolyconstructors {public static void main (string [] args) {new Roundglyph (5) ؛ }} نتيجة الإخراج:
Glyph () قبل Draw () roundglyph.draw () ، نصف قطر = 0glyph () بعد draw () roundglyph.rondglyph () ، نصف القطر = 5
يوضح الرمز أعلاه عملية تهيئة الفصل والمشاكل الكارثية الخفية.
تستدعي الوظيفة الرئيسية مُنشئ RoundGlyPh مع المعلمة 5 لإنشاء كائن RoundGlyph ، ويتم استدعاء مُنشئ Roundglyph من الرسول الرمزية الفئة الأم قبل تنفيذ مُنشئ الجليد.
ومع ذلك ، يتم استدعاء طريقة السحب في مُنشئ الرسول الرمزية الفئة الأصل. بسبب تعدد الأشكال ، تسمى طريقة السحب للفئة الفرعية بالفعل. ومع ذلك ، لم تتم تهيئة redius من الفئة الفرعية من خلال المُنشئ في هذا الوقت ، وبالتالي فإن الإخراج هو:
Roundglyph.draw () ، نصف القطر = 0
من الواضح أن هذه ليست النتيجة التي نريدها ، لذلك من المهم ملاحظة:
السبب الثاني هو أن النهائي لن يطبق تعدد الأشكال ، لذلك يمكن ضمان أن تسمى الطريقة المقابلة للكائن الحالي ، بدلاً من طريقة تجاوز الفئة الفرعية التي لم يتم تنفيذها في أعمال التهيئة.
لخص طريقة تخصيص الذاكرة النهائية:
1. تعديل المتغيرات:
بشكل عام ، هناك ثلاثة أماكن يمكن فيها تعيين المتغيرات النهائية: التعيين المباشر ، في المُنشئ ، أو في كتلة التهيئة.
(1) التهيئة:
منذ أن ترتبط الإعلان والتهيئة مع بناء جملة Java ،
وهذا يعني: إذا لم تقم بعرض متغير تهيئة ، فسيقوم النظام تلقائيًا بتهيئته بقيمة افتراضية. (إذا كان INT 0)
بالنسبة للمتغيرات النهائية ، إذا لم تقم بتعيين قيم عند الإعلان عنها ، فإن النظام يتخلف عن هذا الحقل الفارغ ، والذي يتم تهيئته في المنشئ.
إذا كان ثابتًا ، فيمكنك تهيئة الكتلة.
(2) الذاكرة:
تختلف طرق معالجة الثوابت (المتغيرات النهائية) والمتغيرات غير النهائية.
عندما يستخدم كل نوع ثابت ، فإنه سينسخ نسخة إلى تجمع ثابت خاص به.
يتم تخزين الثوابت أيضًا في منطقة الطريقة مثل متغيرات الفئة (ثابتة) ، ولكن يتم تخزينها في البركة الثابتة.
(ربما ، تتم مشاركة متغيرات الفصل بواسطة جميع الحالات ، في حين أن التجمعات المستمرة فريدة من نوعها لكل مثيل.)
2. طريقة التعديل:
يتم حفظه في منطقة الطريقة ويمكن استبداله مباشرة برمز الوظيفة دون الانتظار حتى التنفيذ لتحديد الوظيفة المحددة.
3. فئة التعديل:
حفظ في منطقة الطريقة.