Sobes.tech
Junior

Kas yra vidinės klasės?

sobes.tech AI

Atsakymas iš AI

Vietiniai klasės yra klasės, deklaruotos kitoje klasėje. Jos skirstomos į du pagrindinius tipus: statines vidines klases (statiniai klasių nariai) ir vidines klases (nestatiniai klasių nariai).

Statinės vidinės klasės:

  • Susijusios su išorine klase, o ne su jos egzemplioriumi.
  • Gali prieiti tik prie išorinės klasės statinių narių.
  • Gali būti sukurtos be išorinės klasės egzemplioriaus.

Vidinės klasės:

  • Susijusios su išorine klase egzemplioriumi.
  • Gali prieiti prie visų išorinės klasės narių (įskaitant private).
  • Reikalauja išorinės klasės egzemplioriaus jų sukūrimui.

Naudojimo pavyzdžiai:

  • Grupavimas: Logiškai susijusios klasės gali būti sujungtos gerinant kodo skaitomumą ir organizaciją.
  • Uždarymas: Vidinės klasės turi prieigą prie privačių išorinės klasės narių, leidžiant įgyvendinti įgyvendinimo detales.
  • Įvykių klausytojai (Java): Dažnai naudojami kuriant anonimines vidines klases.
  • Pagalbinės klasės: Mažos klasės, naudojamos tik išorinės klasės.
// Statinės vidinės klasės pavyzdys
class OuterClass {
    static int outerStaticField = 1;
    int outerInstanceField = 2;

    static class StaticNestedClass {
        void display() {
            System.out.println("Išorės statinis laukas: " + outerStaticField);
            // Negalima tiesiogiai prieiti prie outerInstanceField
        }
    }
}

// Vidinės klasės pavyzdys
class AnotherOuterClass {
    int outerField = 10;

    class InnerClass {
        void display() {
            System.out.println("Išorės laukas: " + outerField); // Prieiga prie išorės klasės lauko
        }
    }
}

Lyginamoji lentelė:

Savybė Statinė vidinė klasė Vidinė klasė
Ryšys Su išorine klasei Su išorės klases egzemplioriumi
Prieiga prie narių Tik statiniai Visi nariai (įskaitant private)
Reikalauja egzemplioriaus Ne Taip
Gali turėti statinius narius Taip Ne (išskyrus konstantas)