Middle
Kas yra vidinės klasės?
sobes.tech AI
Atsakymas iš AI
Įdėtas klasė yra klasė, apibrėžta kitos klasės viduje.
Java įdėtų klasių tipai:
-
Statinė įdėta klasė (Static Nested Classes):
- Pasiekiama iš išorinės klasės be jos egzemplioriaus.
- Neturi tiesioginės prieigos prie nestatinio išorinės klasės lauko ir metodų.
- Deklaruojama su
staticraktiniu žodžiu.
-
Vidinės klasės (Inner Classes):
- Narys-vidinė klasė (Member Inner Classes):
- Deklaruojama išorinės klasės narių lygyje.
- Turi prieigą prie visų išorinės klasės narių (įskaitant privačius).
- Reikalauja išorinės klasės egzemplioriaus savo egzemplioriaus kūrimui.
- Vietinės vidinės klasės (Local Inner Classes):
- Apibrėžiamos metodo, konstruktoriaus ar inicializacijos bloko viduje.
- Matomos tik šio metodo/bloko ribose.
- Turi prieigą prie
finalarba efektyviaifinalvietinių kintamųjų iš išorinės aplinkos.
- Anoniminės vidinės klasės (Anonymous Inner Classes):
- Be vardo klasės.
- Naudojamos objektų kūrimui, kurie iš karto įgyvendina sąsają arba išplečia klasę.
- Apibrėžiamos ir instancijuojamos vienu veiksmu.
- Narys-vidinė klasė (Member Inner Classes):
Pavyzdys statinės įdėtos klasės:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Gali pasiekti išorinės klasės statinius narius
System.out.println(msg);
}
}
}
// Naudojimas
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Pavyzdys nario-vidinės klasės:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Gali pasiekti visus išorinės klasės narius
System.out.println(msg);
}
}
}
// Naudojimas
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Įdėtų klasių naudojimo privalumai:
- Grupavimas: Logiškai susijusios klasės gali būti sujungtos.
- Inkapuliacija: Vidinės klasės gali turėti prieigą prie privačių išorinės klasės narių, užtikrinant geresnę inkapsuliaciją.
- Skaitomumas ir palaikymas: Paslėpia pagalbines klases pagrindinės klasės viduje.
- Veiksmingumas: Gali būti naudojamos kuriant kompaktiškesnes ir efektyvesnes duomenų struktūras.