Sobes.tech
Middle

Qaysi ichki sinflar mavjud?

sobes.tech AI

AIdan javob

Turgili ich ichki sinflar va ichki sinflar (statik bo'lmagan ichki sinflar).

  • Statik ichki sinflar:

    • static kalit so'zi bilan e'lon qilinadi.
    • Faqat tashqi sinfning statik a'zolariga (maydonlar va metodlar) kirish huquqiga ega, jumladan maxfiylar.
    • Tashqi sinfning statik bo'lmagan a'zolariga to'g'ridan-to'g'ri kirish imkoniyati yo'q.
    • Tashqi sinf nusxasidan mustaqil ravishda yaratilishi mumkin.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        static class StaticNested {
            void display() {
                System.out.println("Statik o'zgaruvchi: " + staticVar);
                // System.out.println("Nusxa o'zgaruvchi: " + instanceVar); // Kompilyatsiya xatosi
            }
        }
    }
    
  • Ichki sinflar (statik bo'lmagan ichki sinflar):

    • static kalit so'zi bilan e'lon qilinmaydi.
    • To'liq kirish huquqiga ega (statik va statik bo'lmagan) tashqi sinf a'zolariga, jumladan maxfiylarga.
    • Faqat final konstantalar tashqari statik a'zolarni (maydonlar yoki metodlar) o'z ichiga olmaydi.
    • Yaratuv uchun tashqi sinf nusxasi talab qilinadi.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        class Inner {
            void display() {
                System.out.println("Statik o'zgaruvchi: " + staticVar);
                System.out.println("Nusxa o'zgaruvchi: " + instanceVar);
            }
        }
    }
    
  • Mahalliy sinflar:

    • Metodlar, konstruktorlar yoki boshlang'ich bloklar ichida e'lon qilinadi.
    • Final va effectively final bo'lgan mahalliy o'zgaruvchilarga, shuningdek, ular aniqlangan tashqi sinf a'zolariga kirish huquqiga ega.
    • Ularning ko'rinish doirasi ular e'lon qilingan blok bilan cheklangan.
    class Outer {
        void myMethod() {
            final int localVar = 5; // Effektiv final
    
            class LocalInner {
                void display() {
                    System.out.println("Mahalliy o'zgaruvchi: " + localVar);
                }
            }
    
            LocalInner local = new LocalInner();
            local.display();
        }
    }
    
  • Noma'lum sinflar:

    • Nomsiz mahalliy sinflar.
    • Bir vaqtning o'zida yaratiladi va nusxalanadi.
    • Interfeyslarni amalga oshirish yoki sinflarni kengaytirish uchun keng qo'llaniladi.
    interface MyInterface {
        void doSomething();
    }
    
    class Outer {
        void myMethod() {
            MyInterface anon = new MyInterface() {
                @Override
                public void doSomething() {
                    System.out.println("Noma'lum tarzda bajarilmoqda.");
                }
            };
            anon.doSomething();
        }
    }
    

Statik ichki sinflar va ichki sinflar o'rtasidagi asosiy farqlar:

Xususiyat Statik ichki sinf Ichki sinf
Kalit so'z static Yo'q
A'zolarga kirish Faqat tashqi sinfning statik a'zolariga Tashqi sinfning barcha a'zolariga kirish
Nusxa olish Tashqi sinfa nusxasidan mustaqil ravishda Tashqi sinf nusxasini talab qiladi
Statik a'zolar Ularni o'z ichiga olishi mumkin O'z ichiga olmaydi (faqat konstantalar)