في Java ، يتم استخدام الكلمة الرئيسية النهائية لإعلان أن الكائن غير قابل للتغيير. تتضمن الكائنات هنا المتغيرات والأساليب والفئات ، والتي تشبه الكلمة الرئيسية const في C ++.
لا يمكن التوقف عن أنه بعد إنشاء الكائن ، لا يمكن تغيير الحالة. يمكنك التفكير في استخدام الكلمة الرئيسية النهائية من ثلاثة وجهات نظر:
المتغير النهائي
تحديد الكائن النهائي A ، ثم يمكن تهيئة A مرة واحدة فقط. بمجرد تهيئة ، لا يمكن تعديل بيانات A. إذا كان A هو نوع مرجعي ، فلا يمكن تعويذة كائنات أخرى.
يسمى المتغير النهائي الذي لم يتم تهيئته فارغة. إذا كان متغيرًا عضوًا ، فيجب تهيئته أو تعيينه في المنشئ.
مثال:
Class Circle {Static Final Double Pi = 3.1415926 ؛ دائرة نصف قطرها النهائية = 5 ؛ النهائي int xpos ؛ int ypos النهائي ؛ الدائرة العامة (int x ، int y) {xpos = x ؛ ypos = y ؛ }} الطريقة النهائية
إذا حددت الطريقة النهائية ، فلا يمكن تحميل الطريقة. لا يريد مصمم الطريقة أن تحدث وظائف أخرى ذات صلة بسبب التحميل الزائد للطريقة.
مثال:
class baseclass {public final void method () {}} class derivedClass Extensed BaseClass {public final void method () {} // compilation error}تجدر الإشارة إلى أن تعريف الطريقة النهائية قد لا ينتج بالضرورة تأثير مضمّن ، لأن ما إذا كانت الطريقة مضمنة تعتمد على استراتيجية JVM ، بدلاً من الكلمة الرئيسية النهائية ، من غير الدقيق تحسين كفاءة الطريقة من خلال التصميم النهائي.
الفصل النهائي
لا يمكن أن يتم مورث الفئة النهائية X المحددة بواسطة الفئة النهائية X.
في Java ، تم تصميم فئة السلسلة على النحو النهائي ، وتعريفها على النحو التالي
نسخة الكود كما يلي:
السلسلة النهائية للفئة العامة تمتد الكائنات التي تنفذ قابلة للتسلسل ، قابلة للمقارنة <string> ، charsequence
الطبقة الداخلية والنهائية
عند تحديد الفئة الداخلية المجهولة في طريقة ما ، يمكن للفئة الداخلية الوصول فقط إلى متغيرات النوع النهائي في الطريقة ، بحيث يمكن لمجمول Java التقاط قيمة المتغير مقدمًا وحفظ نسخة في الفئة الداخلية. عندما يتم تدمير الطريقة ، لا تزال مساحة ذاكرة الفئة الداخلية كاملة.
مثال:
غلاف الفئة العامة {public static void main (string [] args) {// object obj = null ؛ // خطأ خطأ الكائن النهائي obj = null ؛ موضوع جديد (جديد RunNable () {public void run () {obj = "hello" ؛}}). start () ؛ }} ملاحظة: إصدار لا يمكن للطبقة المجهولة الداخلية الوصول إلى المتغيرات الخارجية غير النهائية
هذا يبدو من الصعب بعض الشيء التحدث عنه ، ولكن في الواقع ، أريد التحدث أكثر عن بعض ميزات الفصول الداخلية Java.
السبب في أنني أفكر في هذا السؤال هو أنه عندما كنت أقرأ الكود حول HTTP Keepalive في رمز مصدر JDK مؤخرًا ، أحد الملفات المصدر ، sun.net.www.protocol.http.httpurlconnection.java ، شاهد الكود التالي عن طريق الخطأ.
النتيجة النهائية المنطقية [] = {false} ؛ java.security.accessController.doprivileged (new java.security.privilegedAgne () {public object run () {try inetaddress a1 = inetaddress.getByname (h1) ؛ A1.equals (A2) ؛لا يمكن للفئات الداخلية المجهولة في Java الوصول إلى المتغيرات غير النهائية للوظيفة المقابلة. للوصول إلى متغير محلي خارجي ، يجب تعريف هذا المتغير على أنه Fianl أولاً. ومع ذلك ، بمجرد تعريفه على أنه نهائي ، لا يمكن تعديل قيمة هذا المتغير في فئة داخلية مجهولة المصدر ، لذلك ليس من السهل إرجاع بعض القيم المفيدة في فئة داخلية مجهولة المصدر. يستخدم هذا الرمز طريقة ذكية للغاية ، باستخدام المصفوفات هنا لتجاوز هذا القيد. على الرغم من أننا لا نستطيع تعديل الإشارة إلى النتيجة المتغيرة ، يمكننا تعديل محتوى الصفيف الذي تم الإشارة إليه حسب النتيجة.
أريد فقط تسجيل خدعة صغيرة لتعديل المتغيرات الخارجية بواسطة فئات مجهولة داخلية. ولكن نظرًا لأنك وصلت إلى هنا ، فقد تستمر في معرفة الميزات أو القيود التي تتمتع بها الفصول الداخلية.
قبل مواصلة هذا المقال ، أشعر أنه من الضروري للغاية توضيح بعض مصطلحات Java المشاركة في هذه المقالة. ليس من السهل ترجمة هذه المصطلحات إلى صينية ، لذلك سنظل تصفها باللغة الإنجليزية.
// هذا هو classpublic class javaterm {// Field أو Member Fariable Private Int Field ؛ // constructor public javaterm () {} // method method public void method () {// local variable int localVariable = 0 ؛ // class class localclass {public localclass () {}} // فئة مجهولة المصدر جديدة () {public void run () {}} ؛ }}اليوم سوف نركز أكثر على الطبقة المحلية والطبقة المجهولة ، وكلاهما ينتمي إلى الطبقة الداخلية.
تسمح لنا Java بتحديد فئة أخرى في فصل ، والتي تسمى الطبقة المتداخلة ، ويمكن تقسيم الطبقة المتداخلة إلى فئتين ، واحدة هي فئة متداخلة ثابتة ، والآخر هو فئة متداخلة غير منتظمة ، والمعروفة أيضًا باسم الطبقة الداخلية. يمكن أيضًا تقسيم الفئة الداخلية إلى فئة محلية وفئة مجهولة.
بعض القيود المفروضة على فئة مجهولة