Junior
Kas ir iekšējās klases?
sobes.tech AI
Atbilde no AI
Iekšējās klases ir klases, kas ir deklarētas citas klases ietvaros. Tās iedala divos galvenajos tipos: statiskās iekšējās klases (statiskie klases locekļi) un iekšējās klases (nestatiskie klases locekļi).
Statiskās iekšējās klases:
- Ir saistītas ar ārējo klasi, ne ar tās instanci.
- Var piekļūt tikai ārējās klases statiskajiem locekļiem.
- Var tikt izveidotas bez ārējās klases instances.
Iekšējās klases:
- Ir saistītas ar ārējās klases instanci.
- Var piekļūt visiem ārējās klases locekļiem (ieskaitot private).
- Prasa ārējās klases instanci to izveidei.
Piemēri:
- Grupēšana: Loģiski saistītas klases var apvienot, lai uzlabotu koda lasāmību un organizāciju.
- Aizsardzība: Iekšējās klases piekļūst privātajiem ārējās klases locekļiem, ļaujot slēpt īstenošanas detaļas.
- Notikumu klausītāji (Java): Bieži tiek izmantoti anonimām iekšējām klasēm.
- Palīgklases: Mazas klases, ko izmanto tikai ārējā klase.
// Statiskās iekšējās klases piemērs
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Ārējās statiskās lauks: " + outerStaticField);
// Tieši nevar piekļūt outerInstanceField
}
}
}
// Iekšējās klases piemērs
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Ārējās lauks: " + outerField); // Piekļuve ārējās klases laukam
}
}
}
Salīdzināšanas tabula:
| Īpašība | Statiskā iekšējā klase | Iekšējā klase |
|---|---|---|
| Saistība | Ar ārējo klasi | Ar ārējās klases instanci |
| Piekļuve locekļiem | Tikai statiskie | Visi locekļi (ieskaitot private) |
| Nepieciešama instancija | Nē | Jā |
| Var saturēt statiskos locekļus | Jā | Nē (izņemot konstantes) |