Sobes.tech
Junior — Middle

Kuo skiriasi vidinė klasė nuo įterptosios klasės programavime?

sobes.tech AI

Atsakymas iš AI

Java (ir Android) įdėtas klasė yra bet kuri klasė, deklaruota kitoje klasėje. Įdėtos klasės būna dviejų tipų:

  1. Statinė įdėta klasė (static nested class) — deklaruota su static modifikatoriumi. Ji neturi tiesioginės prieigos prie išorinės klasės nestatinių narių.
  2. Vidinė klasė (inner class) — įdėta klasė be static modifikatoriaus. Ji yra susieta su išorinės klasės egzemplioriumi ir turi prieigą prie jos nestatinių laukų ir metodų.

Pavyzdys:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Negalima tiesiogiai pasiekti outerField
            System.out.println("Statinė įdėta klasė");
        }
    }

    class Inner {
        void print() {
            // Gali pasiekti outerField
            System.out.println("Vidinė klasė, outerField = " + outerField);
        }
    }
}

Pagrindinis skirtumas tas, kad vidinė klasė yra susieta su išorinės klasės objektu ir gali pasiekti jos nestatinius narius, o statinė įdėta klasė — ne.