Middle
Kas ir iekšējās klases?
sobes.tech AI
Atbilde no AI
Iekšējā klase ir klase, kas ir definēta citas klases iekšienē.
Java iekšējo klases veidi:
-
Statiskā iekšējā klase (Static Nested Classes):
- Pieejama no ārējās klases bez tās instances.
- Tieši nepiekrīt piekļuvi ārējās klases nestatiskajiem laukiem un metodēm.
- Deklarēta ar
staticatslēgas vārdu.
-
Iekšējās klases (Inner Classes):
- Lomas-iekšējās klases (Member Inner Classes):
- Deklarētas ārējās klases locekļu līmenī.
- Pieejamas visiem ārējās klases locekļiem (ieskaitot privātos).
- Prasa ārējās klases instance, lai izveidotu savu instance.
- Vietējās iekšējās klases (Local Inner Classes):
- Definētas metodes, konstruktora vai inicializācijas blokā.
- Redzamas tikai šīs metodes/bloka ietvaros.
- Pieejas ir
finalvai efektīvifinalvietējiem mainīgajiem ārējā konteksta.
- Anonīmās iekšējās klases (Anonymous Inner Classes):
- Klases bez nosaukuma.
- Izmanto, lai izveidotu objektus, kas tūlīt realizē interfeisu vai paplašina klasi.
- Definētas un instancētas vienlaikus.
- Lomas-iekšējās klases (Member Inner Classes):
Piemērs statiskai iekšējai klasei:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Var piekļūt ārējās klases statiskajiem locekļiem
System.out.println(msg);
}
}
}
// Izmantošana
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Piemērs locekļa-iekšējai klasei:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Var piekļūt visiem ārējās klases locekļiem
System.out.println(msg);
}
}
}
// Izmantošana
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Iekšējo klases izmantošanas priekšrocības:
- Grupēšana: Loģiski saistītas klases var tikt grupētas.
- Inkapulācija: Iekšējās klases var piekļūt privātajiem ārējās klases locekļiem, nodrošinot labāku inkapsulāciju.
- Lasāmība un uzturēšana: Slēpj palīgklases galvenās klases iekšienē.
- Efektivitāte: Var tikt izmantotas, lai izveidotu kompakākas un efektīvākas datu struktūras.