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();