Sobes.tech
Middle

Java'da ichki (nested) va ichki (inner) sinflar o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

  • Nested sinflar (Nested classes): Tashqi sinfning statik a'zolari. Ular tashqi sinfning statik bo'lmagan a'zolariga (maydonlar va metodlar) to'g'ridan-to'g'ri kirish imkoniga ega emaslar, faqat tashqi sinfning nusxasi orqali. static kalit so'zi bilan e'lon qilinadi.

  • Ichki sinflar (Inner classes): Tashqi sinfning statik bo'lmagan a'zolari. Ular tashqi sinfning barcha a'zolariga (statik va statik bo'lmagan) to'liq kirish huquqiga ega, jumladan maxfiylar ham. Ichki sinf nusxasini yaratish uchun tashqi sinf nusxasi kerak. static kalit so'zidan foydalanmaydi.

Misol:

// Tashqi sinf
class Outer {
    private int outerField = 10;
    private static int staticOuterField = 20;

    // Statik ichki sinf
    static class StaticNestedClass {
        void display() {
            // Faqat tashqi sinfning statik a'zolariga kirish
            System.out.println("Statik ichki: " + staticOuterField);
            // outerField ga to'g'ridan-to'g'ri kirish mumkin emas
            // System.out.println(outerField); // Kompilyatsiya xatosi
        }
    }

    // Statik bo'lmagan ichki sinf
    class InnerClass {
        void display() {
            // Tashqi sinfning barcha a'zolariga kirish
            System.out.println("Ichki: " + outerField);
            System.out.println("Ichki (statik): " + staticOuterField);
        }
    }
}

// Foydalanish
public class Main {
    public static void main(String[] args) {
        // Statik ichki sinf nusxasini yaratish
        Outer.StaticNestedClass staticNested = new Outer.StaticNestedClass();
        staticNested.display();

        // Ichki sinf nusxasini yaratish uchun tashqi sinf nusxasi kerak
        Outer outer = new Outer();
        Outer.InnerClass inner = outer.new InnerClass();
        inner.display();
    }
}
Xususiyat Nested sinf (Nested Class) Inner sinf (Inner Class)
Kalit so'z static Yo'q
Tashqi sinf a'zolariga kirish Faqat statiklar Barchasi
Tashqi sinf nusxasi bo'lmasdan inner sinf nusxasi yaratish mumkinmi? Yo'q Ha
Tashqi sinf nusxasi bilan bog'liqlik Yo'q Ha