Junior
Ce sunt clasele imbricate?
sobes.tech AI
Răspuns de la AI
Clasele încapsulate sunt clase declarate în interiorul altei clase. Ele sunt împărțite în două tipuri principale: clase încapsulate statice (membri statici ai clasei) și clase interne (membri non-staționali).
Clase încapsulate statice:
- Sunt legate de clasa externă, nu de instanța acesteia.
- Pot accesa doar membrii statici ai clasei externe.
- Pot fi create fără o instanță a clasei externe.
Clase interne:
- Sunt legate de o instanță a clasei externe.
- Pot accesa toți membrii clasei externe (statice și non-statice), inclusiv private.
- Necesită o instanță a clasei externe pentru a fi create.
Exemple de utilizare:
- Grupare: Clasele logic legate pot fi combinate pentru a îmbunătăți lizibilitatea și organizarea codului.
- Încapsulare: Clasele interne au acces la membrii privați ai clasei externe, permițând încapsularea detaliilor de implementare.
- Ascultători de evenimente (Java): Sunt adesea folosite pentru a crea clase interne anonime.
- Clase auxiliare: Clase mici folosite doar de clasa externă.
// Exemplu de clasă încapsulată static
class OuterClass {
static int outerStaticField = 1;
int outerInstanceField = 2;
static class StaticNestedClass {
void display() {
System.out.println("Câmp static extern: " + outerStaticField);
// Nu se poate accesa direct outerInstanceField
}
}
}
// Exemplu de clasă internă
class AnotherOuterClass {
int outerField = 10;
class InnerClass {
void display() {
System.out.println("Câmp extern: " + outerField); // Acces la câmpul clasei externe
}
}
}
Tabel comparativ:
| Caracteristică | Clasă încapsulată static | Clasă internă |
|---|---|---|
| Relație | Cu clasa externă | Cu o instanță a clasei externe |
| Acces la membrii externi | Doar statici | Toți membrii (inclusiv private) |
| Necesită instanță | Nu | Da |
| Poate conține membri statici | Da | Nu (cu excepția constantelor) |