Sobes.tech
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)
Патрабуе экземпляр Не Так
Можа ўтрымліваць статычныя члены Так Не (акрамя канстант)