Sobes.tech
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)