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:
statickalit 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):
statickalit 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) |