مقدمة
الإغلاق هو كائن قابل للاستدعاء يسجل بعض المعلومات من النطاق الذي تم إنشاؤه به. من خلال هذا التعريف ، يمكن ملاحظة أن الفئة الداخلية هي إغلاق موجه نحو الكائن ، لأنه لا يحتوي فقط على معلومات حول كائن الفئة المحيطية (نطاق إنشاء الفئة الداخلية) ، ولكن أيضًا لديه مرجع إلى كائن الفئة المحيطية. في هذا الدور ، يحق للطبقة الداخلية تشغيل جميع الأعضاء ، بما في ذلك الأعضاء من القطاع الخاص.
واحدة من أكثر القضايا إثارة للجدل في جافا هي أنه من المعتقد أن Java يجب أن تتضمن بعض الآليات الشبيهة بالمؤشر للسماح لعمليات الاسترداد. من خلال رد الاتصال ، يمكن للكائن أن يحمل بعض المعلومات التي تسمح لها بالاتصال بالكائن الأولي في وقت لاحق. إذا تم تنفيذ رد الاتصال من خلال مؤشر ، فيمكنك فقط أن تأمل أن المبرمج لن يسيء استخدام المؤشر.
1. الفئة الداخلية للأعضاء
يمكن اعتبار الطبقة الداخلية عضوًا. يمكن للفئة الداخلية الأعضاء الوصول دون قيد أو شرط جميع خصائص الأعضاء وأساليب الأعضاء في الفئات الخارجية.
الفئة outterclass {// الفئة الخارجية private int in = 0 ؛ ثابت int inn = 4 ؛ Outterclass العامة (int in) {this.in = in ؛ } class innerclass {// inner class public void output () {system.out.println (in) ؛ system.out.println (inn) ؛ }}}عندما تمتلك الفئة الداخلية عضوًا متغيرًا أو طريقة مع نفس الاسم مثل فئة خارجية ، يتم الوصول إلى أعضاء الفئة الداخلية العضو افتراضيًا. إذا كنت ترغب في الوصول إلى عضو يحمل نفس اسم فئة خارجية ، فأنت بحاجة إلى الوصول إليه في النموذج التالي:
Outterclass (فئة خارجية). هذا
عندما تصل فئة خارجية إلى فئة داخلية ، يجب أولاً إنشاء كائن من الفئة الداخلية العضو ، ثم الوصول إليها من خلال إشارة إلى هذا الكائن.
الفئة outterclass {private int in = 0 ؛ ثابت int inn = 4 ؛ Outterclass العامة (int in) {innerclass inner = new innerclass () ؛ this.in = inner.innernum ؛ } class innerclass {// inner class public Innernum = 1 ؛ إخراج public void () {system.out.println (in) ؛ system.out.println (inn) ؛ int a = outterclass.This.inn ؛ }}}توجد الفئات الداخلية للأعضاء بناءً على الفئات الخارجية ، أي إذا كنت ترغب في إنشاء كائن من الفئة الداخلية العضو ، فإن الفرضية هي وجود كائن من الفئة الخارجية. الطريقة العامة لإنشاء كائن فئة داخلي عضو على النحو التالي:
فئة الفئة العامة {public static void main () {outterClass oc = new OutterClass (3) ؛ outterclass.innerclass في = oc.new innerclass () ؛ }} 2. الفئات الداخلية المحلية
يشبه الفصل الداخلي المحلي متغيرًا محليًا بطريقة ما ، ولا يمكن أن يكون لديه معدلات public protected private static .
class outterclass {public outterclass (int in) {class innerclass {// local inner class int innernum = 1 ؛ }}} 3. الطبقات الداخلية المتداخلة
الطبقات الداخلية المتداخلة هي فصول داخلية تم تعديلها على أنها static . لا يتطلب الفئة الداخلية المعلنة static وجود اتصال بين كائن الفئة الداخلية وكائن الفئة الخارجية ، أي يمكننا الإشارة مباشرة إلى outer.inner ، أي أننا لا نحتاج إلى إنشاء فئة خارجية أو فئة داخلية.
الفئة outterclass {public outterclass (int in) {} static class innerclass {// local inner class int innernum = 1 ؛ }} فئة الفئة العامة {public static void main () {outterclass.innerclass in = new OutterClass.innerClass () ؛ }} 4. فئة داخلية مجهولة المصدر
الفصول الداخلية المجهولة هي تلك التي نستخدمها أكثر لأننا لا نريد منحهم أسماء ، لذلك لدينا عدم الكشف عن هويته. يجب تحديد الفصول الداخلية المجهولة مسبقًا.
btnsan.setonClickListener (newonClickListener () {Override PublicVoidonClick (view v) {}}) ؛ 5. الإغلاق والاسترداد
الإغلاق هو كائن يمكن استدعاؤه ، والذي يحفظ معلومات حول النطاق الذي يخلقه. لا يمكن لـ Java دعم عمليات الإغلاق بشكل صريح ، ولكن في Java ، يمكن تنفيذ عمليات الإغلاق من خلال "واجهة + فئة داخلية".
على سبيل المثال: يتمتع مبرمج واجهة وكاتب فئة أساسي بنفس الطريقة التي work بها اسم الطريقة ، ولكن معناها مختلف تمامًا. في هذا الوقت ، يلزم الإغلاق.
فئة كاتب {// الكاتب قاعدة الفئة الفراغ العمل () {} ؛} واجهة مبرمج {// واجهة مبرمج void work () ؛} رمز تنفيذ الإغلاق كما يلي:
يمتد كاتب الفئة العامة الكاتب {Override public void work () {// writing} public void code () {// write code} class programmerinner programmer {Override public void work () {code () ؛ }}} في الفئة الفرعية ، يتم تعريف فئة داخلية تتبع قواعد واجهة المبرمج ، ثم تنفذ الفئة الداخلية طريقة work() طريقة الاتصال () طريقة رد الاتصال code() ، وتنفيذ work() للكاتب الأصل بشكل مباشر في الفئة الفرعية.
6. دور الفئات الداخلية
يمكن تنفيذ الفصول الداخلية بشكل جيد للاختباء.
بشكل عام ، لا تسمح الطبقات غير الداخلية بأذونات private protected ، لكن الطبقات الداخلية يمكن
تتمتع الفئة الداخلية بالوصول إلى جميع عناصر الطبقة المحيطية
ولكن يتم تحقيق الميراث المتعدد
يمكن أن يتجنب تعديل الواجهة وتنفيذ مكالمات لطريقتين تحمل نفس الاسم في نفس الفئة.
7. ملخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون ذلك مفيدًا لكل من يتعلم أو يستخدم Java. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل.