Avatar ·

ما الفرق بين الفئة الداخلية (inner class) والفئة المتداخلة الثابتة (static nested class) في Java؟

مرحبًا بالجميع! بدأت في تعلم Java وارتبكت في موضوع الفئات المتداخلة. قرأت وثائق Oracle لكنها جافة جدًا. هناك نوعان: inner class (فئة داخلية) و static nested class (فئة متداخلة ثابتة). كتبت مثالًا صغيرًا لكنني لا أفهم لماذا يعمل الكود بشكل مختلف. إليك الكود الخاص بي: ```java public class OuterClass { private String outerField = "حقل خارجي"; // فئة داخلية class InnerClass { void display() { System.out.println("Inner: " + outerField); } } // فئة متداخلة ثابتة static class StaticNestedClass { void display() { // خطأ! لا يرى outerField // System.out.println("StaticNested: " + outerField); } } } ``` الأسئلة: 1. لماذا لا يستطيع `StaticNestedClass` الوصول إلى `outerField` دون إنشاء نسخة من الفئة الخارجية، بينما يستطيع `InnerClass` ذلك؟ 2. متى يجب استخدام `static` للفئة المتداخلة، ومتى لا؟