Sobes.tech
Junior — Middle

Koja je razlika između unutrašnje klase i ugnježdene klase u programiranju?

sobes.tech АИ

Одговор од АИ

U Javi (i u Androidu) ugneždena klasa je svaka klasa koja je deklarisana unutar druge klase. Ugnježdene klase postoje u dva tipa:

  1. Statička ugnježdena klasa (static nested class) — deklarisana sa modifikatorom static. Nemaju direktan pristup nestatickim članovima spoljašnje klase.
  2. Unutrašnja klasa (inner class) — ugnježdena klasa bez modifikatora static. Povezana je sa instancom spoljašnje klase i ima pristup njenim nestatickim poljima i metodama.

Primer:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Nije moguće direktno pristupiti outerField
            System.out.println("Statička ugnježdena klasa");
        }
    }

    class Inner {
        void print() {
            // Može pristupiti outerField
            System.out.println("Unutrašnja klasa, outerField = " + outerField);
        }
    }
}

Glavna razlika je što je unutrašnja klasa povezana sa objektom spoljašnje klase i može pristupiti njenim nestatickim članovima, dok statička ugnježdena klasa to ne može.