Sobes.tech
Middle

Ichki sinflar nima va ular dasturlashda qanday qo'llaniladi?

sobes.tech AI

AIdan javob

Ichki sinflar — bu boshqa sinf ichida e'lon qilingan sinflardir. Ular faqat bir joyda ishlatiladigan sinflarni mantiqan guruhlash, inkapsulyatsiyani oshirish va kodni o'qilishini yaxshilash imkonini beradi.

Ichki sinflar quyidagilarga bo'linadi:

  • Statik (Statik Ichki Sinflar): Ular tashqi sinfning statik bo'lmagan a'zolariga kirish huquqiga ega emas. Ular tashqi sinf nusxasidan holda yaratilishi mumkin.
  • Nostatik (Ichki Sinflar): Ular tashqi sinfning barcha a'zolariga (xususiylar ham) kirish huquqiga ega. Nostatik ichki sinf nusxasini yaratish uchun tashqi sinf nusxasi kerak.

Qo'llanilishi:

  • Implementatsiyani yashirish: Ichki sinf yordamchi sinf sifatida ishlatilishi mumkin, uning implementatsiya tafsilotlari tashqaridan kirish uchun yopiq bo'lishi kerak.
  • Guruhlash: Bir-biriga yaqin bog'langan sinflarning mantiqan birlashishi.
  • Callback / tinglovchilarni amalga oshirish: Ko'pincha interfeyslar yoki abstrakt sinflarni amalga oshirish uchun noma'lum ichki sinflar yaratishda ishlatiladi.
  • Iteratsiya qilish: Ichki sinf kolleksiyaning ichki holatiga kirish huquqiga ega bo'lgani uchun, iteratorni amalga oshirish uchun qulay.

Misol (Java):

class OuterClass {
    private int outerField;

    // Statik ichki sinf
    static class StaticNestedClass {
        void print() {
            // outerField ga kirish imkoniyati yo'q
            System.out.println("StaticNestedClass dan");
        }
    }

    // Nostatik ichki sinf
    class InnerClass {
        void print() {
            // outerField ga kirish
            System.out.println("outerField: " + outerField);
        }
    }
}
// Statik ichki sinf nusxasini yaratish
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Ichki sinf nusxasini yaratish
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();