Junior
Ի՞նչ են ներքին դասերը։
sobes.tech AI
Պատասխան AI-ից
Унутра классы — гэта класы, абвешчаныя ўнутры іншага класа. Яны дзеляцца на два асноўныя тыпы: статычныя ўнутраныя класы (статычныя члены класа) і ўнутраныя класы (нестатичныя члены класа).
Статычныя ўнутраныя класы:
- Звязаны з знешнім класам, а не з яго экземплярам.
- Могуць звяртацца толькі да статычных членаў знешняга класа.
- Могуць быць створаны без экземпляра знешняга класа.
Унутраныя класы:
- Звязаны з экземплярам знешняга класа.
- Могуць звяртацца да ўсіх членаў знешняга класа (уключаючы private).
- Патрабуюць экземпляр знешняга класа для свайго стварэння.
Прыклады выкарыстання:
- Групіроўка: Лагічна звязаныя класы можна аб’яднаць для павышэння чытальнасці і арганізацыі кода.
- Інкапсуляцыя: Унутраныя класы маюць доступ да прыватных членаў знешняга, што дазваляе інкапсуляваць дэталі рэалізацыі.
- Слухачы падзей (Java): Часто выкарыстоўваюцца для стварэння ананімных унутраных класаў.
- Дапаможныя класы: Малыя класы, якія выкарыстоўваюцца толькі знешнім класам.
// Прыклад статычнага ўнутранага класа
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Знешняе статычнае поле: " + outerStaticField);
// Нельга прама звярнуцца да outerInstanceField
}
}
}
// Прыклад унутранага класа
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Знешняе поле: " + outerField); // Доступ да поля знешняга класа
}
}
}
Параўнальная табліца:
| Характарыстыка | Статычны ўнутраны клас | Унутраны клас |
|---|---|---|
| Звязак | З знешнім класам | З экземплярам знешняга класа |
| Доступ да членаў знешняга | Толькі статычныя | Усе члены (уключаючы private) |
| Патрабуе экземпляр | Не | Так |
| Можа ўтрымліваць статычныя члены | Так | Не (акрамя канстант) |