Sobes.tech
Middle

Ce sunt clasele imbricate și cum sunt aplicate în programare?

sobes.tech AI

Răspuns de la AI

Clasele imbricate sunt clase declarate în interiorul altei clase. Ele permit gruparea logică a claselor utilizate doar într-un singur loc, cresc încapsularea și fac codul mai ușor de citit.

Clasele imbricate sunt:

  • Statice (Clase Imbricate Statice): Nu au acces la membrii non-statice ai clasei exterioare. Pot fi create fără o instanță a clasei exterioare.
  • Nestatice (Clase Interne): au acces la toți membrii clasei exterioare (inclusiv cei privați). Pentru a crea o instanță a unei clase interne nestatice, este necesară o instanță a clasei exterioare.

Aplicații:

  • Ascunderea implementării: Clasa imbricată poate fi folosită ca o clasă auxiliară, ale cărei detalii de implementare nu trebuie să fie accesibile din exterior.
  • Grupare: Combinarea logică a claselor strâns legate.
  • Implementarea callback-urilor / ascultătorilor: Este adesea folosită pentru a crea clase interne anonime pentru implementarea interfețelor sau claselor abstracte.
  • Iteratoare: Clasa internă este convenabilă pentru implementarea unui iterator, deoarece are acces la starea internă a colecției.

Exemplu (Java):

class OuterClass {
    private int outerField;

    // Clasă internă statică
    static class StaticNestedClass {
        void print() {
            // Nu are acces la outerField
            System.out.println("Din StaticNestedClass");
        }
    }

    // Clasă internă nestică
    class InnerClass {
        void print() {
            // Are acces la outerField
            System.out.println("outerField: " + outerField);
        }
    }
}
// Crearea unei instanțe a clasei interne statice
OuterClass.StaticNestedClass staticNested = new OuterClass.StaticNestedClass();
staticNested.print();

// Crearea unei instanțe a clasei interne
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
inner.print();