Middle
Ce sunt clasele imbricate?
sobes.tech AI
Răspuns de la AI
O clasă imbricată este o clasă definită în interiorul altei clase.
Tipuri de clase imbricate în Java:
-
Clase imbricate statice (Static Nested Classes):
- Accesibile din clasa externă fără instanța acesteia.
- Nu au acces direct la câmpurile și metodele non-statice ale clasei externe.
- Sunt declarate cu cuvântul cheie
static.
-
Clase interne (Inner Classes):
- Clase membre interne (Member Inner Classes):
- Sunt declarate la nivelul membrilor clasei externe.
- Au acces la toate membrii clasei externe (inclusiv cei privați).
- Necesită o instanță a clasei externe pentru a-și crea propria instanță.
- Clase interne locale (Local Inner Classes):
- Sunt definite în interiorul unei metode, constructor sau bloc de inițializare.
- Sunt vizibile doar în interiorul acestei metode/bloc.
- Au acces la variabile locale finale sau efectiv finale din contextul extern.
- Clase anonime interne (Anonymous Inner Classes):
- Clase fără nume.
- Sunt utilizate pentru a crea obiecte care implementează imediat o interfață sau extind o clasă.
- Sunt definite și instantiate într-o singură operație.
- Clase membre interne (Member Inner Classes):
Exemplu de clasă imbricată statică:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Poate accesa membrii statici ai clasei externe
System.out.println(msg);
}
}
}
// Utilizare
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Exemplu de clasă internă membru:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Poate accesa toți membrii clasei externe
System.out.println(msg);
}
}
}
// Utilizare
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Avantajele utilizării claselor imbricate:
- Grupare: Clasele logic legate pot fi grupate.
- Încapsulare: Clasele interne pot avea acces la membrii privați ai clasei externe, îmbunătățind încapsularea.
- Citibilitate și întreținere: Ascund clasele auxiliare în interiorul clasei principale.
- Eficiență: Pot fi folosite pentru a crea structuri de date mai compacte și eficiente.