Sobes.tech
Middle

Java-da iç içə (nested) və daxili (inner) siniflər arasındakı fərqlər nədir?

sobes.tech Süni İntellekt

AI-dan cavab

  • Daxili sinflər (Nested classes): Xarici sinfinin statik üzvləri. Xarici sinfinin statik olmayan üzvlərinə (sahələr və metodlar) birbaşa daxil olmurlar, yalnız xarici sinfin nümunəsi vasitəsilə. static açar sözü ilə elan edilir.

  • Daxili sinflər (Inner classes): Xarici sinfin statik olmayan üzvləri. Xarici sinfin bütün üzvlərinə (statik və statik olmayan) tam giriş imkanı verir, hətta xüsusi üzvlərə də. Daxili sinfin nümunəsini yaratmaq üçün xarici sinfin nümunəsi lazımdır. static açar sözünü istifadə etmirlər.

Nümunə:

// Xarici sinif
class Outer {
    private int outerField = 10;
    private static int staticOuterField = 20;

    // Statik daxili sinif
    static class StaticNestedClass {
        void display() {
            // Yalnız xarici sinfin statik üzvlərinə giriş
            System.out.println("Statik daxili: " + staticOuterField);
            // outerField-ə birbaşa giriş yoxdur
            // System.out.println(outerField); // Kompilyasiya xətası
        }
    }

    // Statik olmayan daxili sinif
    class InnerClass {
        void display() {
            // Bütün xarici sinfin üzvlərinə giriş
            System.out.println("Daxili: " + outerField);
            System.out.println("Daxili (statik): " + staticOuterField);
        }
    }
}

// İstifadə
public class Main {
    public static void main(String[] args) {
        // Statik daxili sinif nümunəsi yaratmaq
        Outer.StaticNestedClass staticNested = new Outer.StaticNestedClass();
        staticNested.display();

        // Daxili sinif nümunəsi yaratmaq üçün xarici sinfin nümunəsi lazımdır
        Outer outer = new Outer();
        Outer.InnerClass inner = outer.new InnerClass();
        inner.display();
    }
}
Xüsusiyyət Daxili sinif (Nested Class) Daxili sinif (Inner Class)
Açar söz static Yox
Xarici sinfin üzvlərinə giriş Yalnız statiklər Hamısı
Xarici sinfin nümunəsi olmadan daxili sinfin nümunəsi yaradıla bilərmi? Yox Bəli
Xarici sinfin nümunəsi ilə əlaqə Yox Bəli