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) |