Middle
Kas yra vidinės klasės ir kaip jos taikomos programavime?
sobes.tech AI
Atsakymas iš AI
Vidinės klasės yra klasės, paskelbtos kitos klasės viduje. Jos leidžia logiškai grupuoti klases, kurios naudojamos tik vienoje vietoje, didina inkapsuliaciją ir daro kodą lengviau skaitomą.
Vidinės klasės būna:
- Statinės (Static Nested Classes): neturi prieigos prie išorinės klasės nestatinės narių. Gali būti sukurtos be išorinės klasės egzemplioriaus.
- Nestatinės (Inner Classes): turi prieigą prie visų išorinės klasės narių (įskaitant privačius). Norint sukurti nestatinės vidinės klasės egzempliorių, reikia išorinės klasės egzemplioriaus.
Naudojimas:
- Įgyvendinimo paslėpimas: Vidinė klasė gali būti kaip pagalbinė klasė, kurios įgyvendinimo detalės neturėtų būti prieinamos išorėje.
- Grupavimas: Logiškai susijusių klasių sujungimas.
- Atgaliniai skambučiai / klausytojai: Dažnai naudojama kurti anonimines vidines klases, įgyvendinančias sąsajas ar abstrakčias klases.
- Iteratorių įgyvendinimas: Vidinė klasė patogi įgyvendinti iteratorių, nes turi prieigą prie kolekcijos vidinės būsenos.
Pavyzdys (Java):
class OuterClass {
private int outerField;
// Statinė vidinė klasė
static class StaticNestedClass {
void print() {
// Neturi prieigos prie outerField
System.out.println("From StaticNestedClass");
}
}
// Nestatinė vidinė klasė (Inner Class)
class InnerClass {
void print() {
// Turi prieigą prie outerField
System.out.println("outerField: " + outerField);
}
}
}
// Sukurti statinės vidinės klasės egzempliorių
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();
// Sukurti vidinės klasės egzempliorių
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();