Middle
Mis on sisemised klassid?
sobes.tech AI
Vastus AI-lt
Sisemine klass on klass, mis on määratletud teise klassi sees.
Java sisemiste klasside tüübid:
-
Staatiline sisemine klass (Static Nested Classes):
- Saadaval välise klassi kaudu ilma selle eksemplarita.
- Ei pääse otse välise klassi mitte-staatilistele väljadele ja meetoditele.
- Deklareeritud
staticmärksõnaga.
-
Sisemised klassid (Inner Classes):
- Liige-sisemised klassid (Member Inner Classes):
- Deklareeritakse välise klassi liikmetasandil.
- Omavad juurdepääsu kõigile välise klassi liikmetele (sh privaatsed).
- Nõuab välise klassi eksemplari, et luua oma eksemplar.
- Kohalikud sisemised klassid (Local Inner Classes):
- Deklareeritakse meetodi, konstruktor või initsialiseerimisbloki sees.
- Nähtavad ainult selle meetodi/bloki piires.
- Omavad juurdepääsu
finalvõi efektiivseltfinalkohalikele muutujatele välises kontekstis.
- Anonüümsed sisemised klassid (Anonymous Inner Classes):
- Klassid ilma nimega.
- Kasutatakse objektide loomiseks, mis kohe rakendavad liidest või laiendavad klassi.
- Deklareeritakse ja instantsiatsioon toimub ühe operatsiooniga.
- Liige-sisemised klassid (Member Inner Classes):
Näide staatilisest sisemisest klassist:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Võib pääseda välise klassi staatilistele liikmetele
System.out.println(msg);
}
}
}
// Kasutamine
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Näide liikme-sisemisest klassist:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Võib pääseda kõigile välise klassi liikmetele
System.out.println(msg);
}
}
}
// Kasutamine
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Sisemiste klasside kasutamise eelised:
- Grupitamine: Loogiliselt seotud klassid võivad olla grupis.
- Inkapulatsioon: Sisemised klassid võivad pääseda välise klassi privaatsesse liikmetesse, pakkudes paremat inkapsulatsiooni.
- Lugemise ja hoolduse lihtsustamine: Peidavad abiklassid peamise klassi sees.
- Tõhusus: Võivad olla kasulikud kompaktsete ja tõhusamate andmestruktuuride loomisel.