العودة إلى الدورة

استكشاف الفئات الداخلية، والمداخلة، والمجهولة

إتقان لغة Java: من الصفر إلى مطور محترف (رحلة من 50 درساً)

الدرس 31: استكشاف الفئات الداخلية والمداخلة والمجهولة

تسمح Java بتعريف فئة داخل فئة أخرى. يساعد هذا في تجميع الفئات المرتبطة منطقياً ويزيد من الكبسلة.

1. الفئات المداخلة (Nested Classes)

الفئة المعرفة داخل فئة أخرى تسمى فئة مداخلة. وتنقسم إلى فئتين رئيسيتين:

أ. الفئات المداخلة الثابتة (Static Nested Classes)

  • يتم التصريح عنها باستخدام الكلمة المفتاحية static.
  • تتصرف مثل الأعضاء الثابتة: يمكن الوصول إليها دون الحاجة إلى نسخة من الفئة الخارجية.
  • يمكنها فقط الوصول إلى الأعضاء الثابتة في الفئة الخارجية.

java public class Outer { static class StaticNested { // الوصول للأعضاء الثابتة فقط في Outer } } // الوصول: Outer.StaticNested nested = new Outer.StaticNested();

ب. الفئات الداخلية (Inner Classes)

  • لا يمكن التصريح عنها كـ static.
  • ترتبط بنسخة من الفئة الخارجية.
  • لديها حق الوصول إلى جميع أعضاء الفئة الخارجية (حتى الخاصة private).

java public class Outer { private int x = 10; class Inner { void display() { System.out.println("Outer x = " + x); // وصول للعضو الخاص } } } // لإنشاء كائن Inner، تحتاج كائن Outer أولاً: // Outer.Inner inner = new Outer().new Inner();

2. الفئات المحلية (Local Classes)

تُعرف داخل دالة أو كتلة كود. نطاقها يقتصر بدقة على تلك الكتلة.

3. الفئات المجهولة (Anonymous Classes)

فئة بدون اسم، تُستخدم عندما تحتاج إلى إنشاء كائن من فئة (أو واجهة) يُستخدم مرة واحدة فقط.

java interface Printable { void print(); }

public class Example { public void doPrint() { // فئة مجهولة تنفذ Printable Printable p = new Printable() { @Override public void print() { System.out.println("Printing via anonymous class."); } }; p.print(); } }