Sobes.tech
Middle

Классҳои дарунсохт чӣ мебошанд ва чӣ гуна дар барномасозӣ истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Ҳамҷоя синфлар — бу бошқа синфнинг ичида эълон қилинган синфлардир. Улар бир жойда фақат бир марта ишлатилган синфларни ментқий гуруҳлаш, капсулацияни ошириш ва кодни ўқишни осонлаштиради.

Ҳамҷоя синфлар:

  • Статик (Статик Ҳамҷоя Синфлар): Улар ташқи синфнинг статик бўлмаган аъзоларига киришга эга эмас. Улар ташқи синфнинг нусхасисиз яратилиши мумкин.
  • Нестатик (Ички синфлар): улар ташқи синфнинг барча аъзоларига (жумладан хусусийларига) киришга эга. Нестатик ички синф нусхасини яратиш учун ташқи синф нусхаси керак.

Қўлланишлар:

  • Ижрони яшириш: Ички синф ёрдамчи синф сифатида ишлатилиши мумкин, унинг амалга ошириш деталлари ташқи томондан кириш мумкин бўлмаслиги керак.
  • Группалаш: Яқин боғланган синфларни логик бирлаштириш.
  • Қайтарим / тингловчиларни амалга ошириш: Кўпинча интерфейслар ёки абстракт синфларни амалга ошириш учун аноним ички синфлар яратишда ишлатилади.
  • Итераторлар: Ички синф коллекциянинг ички ҳолатига кириш имкониятига эга бўлгани учун, итераторни амалга ошириш учун қулай.

Масалан (Java):

class OuterClass {
    private int outerField;

    // Статик ички синф
    static class StaticNestedClass {
        void print() {
            // outerFieldга кириш йўқ
            System.out.println("Статик ички синфдан");
        }
    }

    // Ички синф
    class InnerClass {
        void print() {
            // outerFieldга кириш
            System.out.println("outerField: " + outerField);
        }
    }
}
// Статик ички синф нусхасини яратиш
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Ички синф нусхасини яратиш
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();