Sobes.tech
Junior — Middle

Mi a különbség a belső osztály és a beágyazott osztály között a programozásban?

sobes.tech MI

Válasz az MI-től

Java-ban (és Android-ben) a beágyazott osztály bármilyen osztály, amelyet egy másik osztályon belül deklarálnak. A beágyazott osztályok két típusba sorolhatók:

  1. Statikus beágyazott osztály (static nested class) — a static módosítóval van deklarálva. Nincs közvetlen hozzáférése a külső osztály nem statikus tagjaihoz.
  2. Belső osztály (inner class) — a static módosító nélküli beágyazott osztály. Egy külső osztály példányához kapcsolódik, és hozzáfér a nem statikus mezőkhöz és metódusokhoz.

Példa:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Nem lehet közvetlenül hozzáférni az outerField-hez
            System.out.println("Statikus beágyazott osztály");
        }
    }

    class Inner {
        void print() {
            // Hozzáférhet az outerField-hez
            System.out.println("Belső osztály, outerField = " + outerField);
        }
    }
}

A fő különbség az, hogy a belső osztály egy külső osztály példányához kapcsolódik, és hozzáférhet nem statikus tagjaihoz, míg a statikus beágyazott osztály nem.