Sobes.tech
Junior — Middle

Care este diferența dintre o clasă internă și o clasă imbricată în programare?

sobes.tech AI

Răspuns de la AI

În Java (și în Android) o clasă imbricată este orice clasă declarată în interiorul altei clase. Clasele imbricate sunt de două tipuri:

  1. Clasa imbricată statică (static nested class) — declarată cu modificatorul static. Nu are acces direct la membrii non-staționari ai clasei exterioare.
  2. Clasa internă (inner class) — clasă imbricată fără modificatorul static. Este legată de o instanță a clasei exterioare și are acces la câmpurile și metodele sale non-staționare.

Exemplu:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Nu se poate accesa direct outerField
            System.out.println("Clasă imbricată statică");
        }
    }

    class Inner {
        void print() {
            // Se poate accesa outerField
            System.out.println("Clasă internă, outerField = " + outerField);
        }
    }
}

Prin urmare, diferența principală este că clasa internă este legată de un obiect al clasei exterioare și poate accesa membrii săi non-staționari, în timp ce clasa imbricată statică nu poate.