Junior
Mis on sisemised klassid?
sobes.tech AI
Vastus AI-lt
Sisemklassid on klassid, mis on deklareeritud teise klassi sees. Nad jagunevad kaheks põhiliigiks: staatilised sisemklassid (staatilised liikmed) ja sisemklassid (mitstatilised liikmed).
Staatilised sisemklassid:
- On seotud välise klassiga, mitte selle eksemplariga.
- Võivad viidata ainult välise klassi staatilistele liikmetele.
- Võivad olla loodud ilma välise klassi eksemplarita.
Sisemklassid:
- On seotud välise klassi eksemplariga.
- Võivad viidata kõigile välise klassi liikmetele (sh private).
- Nõuavad nende loomisel välise klassi eksemplari.
Kasutusnäited:
- Grupitamine: Loogiliselt seotud klassid saab ühendada koodi parema loetavuse ja organiseerimise jaoks.
- Kapseldus: Siseklassidel on juurdepääs välise klassi privaatsetele liikmetele, võimaldades peidetud teostuse detaile.
- Sündmuste kuulajad (Java): Kasutatakse sageli anonüümsete siseklasside loomiseks.
- Abiklassid: Väikesed klassid, mida kasutatakse ainult välise klassi poolt.
// Näide staatilisest siseklassist
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Välise staatilise välja: " + outerStaticField);
// Otse ei saa viidata outerInstanceField-ile
}
}
}
// Näide siseklassist
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Välise välja: " + outerField); // Viide välise klassi välja
}
}
}
Võrdlustabel:
| Omadus | Staatiline siseklass | Siseklass |
|---|---|---|
| Seos | Seotud välise klassiga | Seotud välise klassi eksemplariga |
| Pääs liikmetele | Ainult staatilised | Kõik liikmed (sh private) |
| Nõuab eksemplari | Ei | Jah |
| Võib sisaldada statilisi liikmeid | Jah | Ei (välja arvatud konstantsed) |